← Все лидерборды

Карты знаний LLM по PHP

сборка 2026-11-12 01:25 UTC · 13 моделей · 63 карт · 296 клеток · языки ru / en / zh

Каждая клетка карты — один вопрос к модели: без system-промпта, инструментов и диалога, ответ строго в JSON. Вопросник состоит из 240 вопросов — 26 тем по 8 уровней сложности (L1–L8). Темы — язык PHP и стек проекта: Symfony, Doctrine, PostgreSQL, Twig, HTTP и OAuth, PHPUnit, архитектура. Кроме основного вопросника есть зона «Глубина»: по каждой из тех же 26 тем добавлены два вопроса формата «что вернёт этот код» — всего 56. Девятый уровень (L9) — на уровне опытного разработчика, десятый (L10) — на границе знаний, где ошибаются даже сильные модели. Всего модель отвечает на 296 вопросов. Эталонный ответ для каждого вопроса формирует машина: код вопросов исполняет интерпретатор PHP 8.5, вопросы по стеку проекта проверяются на реальных библиотеках проекта (Symfony, Doctrine ORM, Twig, PHPUnit), база данных — PostgreSQL 17 в docker, стили сверяются с закреплённой версией bootstrap.css 5.3.3, OAuth — с RFC 6749. Одна серия — это 5 прогонов вопросника с нуля на одном языке и одном уровне мышления; каждая модель снимается на трёх языках (ru, en, zh) и нескольких уровнях мышления. Затраты локальных моделей считаются по методике §8 — электричество и амортизация, ₽35.85 за час чистой генерации; затраты облачных — по фактическим счетам API.

Простыми словами. Одни и те же вопросы задают модели несколько раз (в отдельных прогонах) и считают, в скольких из них ответ оказался правильным. Зелёная клетка — модель отвечает правильно почти всегда: это устойчивое знание. Красная — почти никогда: этого знания нет. Пунктирная рамка — ответы расходятся от прогона к прогону: модель иногда права, иногда нет, то есть не знает, а угадывает. Зона «Глубина» показывает край того, что модель успела выучить из обучающих текстов: вопросы уровня L9 опытный разработчик решает уверенно, а на уровне L10 ошибается большинство моделей, включая сильные.
Как читать.

Таблица «Метрики серий»:

Карты знаний:

Метрики серий сортировка: клик по заголовку колонки, повторный клик — смена направлениямодели:

МодельthinkЯзыкПрог.PHPPHP+SymfonySymfony+БД и ORMАрх.Фронт.HTTPБезоп.ТестыГлубинаВсегоВремяТок вхТок выхЦенаСтаб.JSON
anthropic/claude-haiku-5.5lowen599.296.696.991.7100.095.0100.0100.0100.0100.095.096.4682с51.1k41.8k$0.0397.0%99.4%
anthropic/claude-haiku-5.5lowru597.995.596.992.5100.097.5100.0100.0100.097.595.496.2690с61.5k43.9k$0.0395.9%100.0%
anthropic/claude-haiku-5.5lowzh595.293.996.991.7100.0100.097.597.5100.0100.094.695.2633с59.5k36.1k$0.0294.6%100.0%
anthropic/claude-haiku-5.5highru1100.097.396.991.7100.0100.0100.0100.0100.0100.096.497.1904с61.5k70.2k$0.04—100.0%
bonsai-2:27boffen581.275.570.666.775.878.870.090.097.572.564.374.8135с38.9k13.9k$0.0246.6%99.2%
bonsai-2:27boffru582.975.968.867.179.275.078.8100.090.075.062.975.8139с42.5k14.3k$0.0252.7%99.1%
bonsai-2:27boffzh578.573.075.667.578.373.872.5100.087.572.566.873.8112с40.6k11.1k$0.0148.0%99.5%
bonsai-2:27blowen594.086.684.482.192.587.588.8100.097.577.581.887.04845с46.0k558.1k$0.5774.0%99.0%
bonsai-2:27blowru592.385.583.882.192.593.888.897.595.085.078.687.03393с49.7k411.1k$0.4070.3%99.0%
bonsai-2:27blowzh594.487.581.278.890.886.287.5100.0100.087.583.286.83383с47.7k394.5k$0.4070.9%99.3%
bonsai-2:27bmediumen592.985.481.278.394.287.586.297.5100.085.081.185.9858с38.3k104.3k$0.1070.3%99.8%
bonsai-2:27bmediumru593.586.481.980.095.090.080.0100.0100.087.577.586.8922с42.0k112.4k$0.1172.3%99.5%
bonsai-2:27bmediumzh593.186.178.875.894.285.083.8100.095.082.583.685.21288с40.0k103.6k$0.1568.9%99.7%
clef-flash:latestdecisionen582.378.681.279.262.581.268.8100.087.587.571.477.919с30.2k0.0k$0.00100.0%—
clef-flash:latestdecisionru578.175.081.275.058.375.068.887.575.087.566.173.821с31.0k0.0k$0.00100.0%—
clef-flash:latestdecisionzh578.175.981.277.158.368.868.887.587.5100.071.475.019с30.3k0.0k$0.00100.0%—
clef:latestdecisionen591.790.296.991.783.381.287.587.5100.0100.089.389.655с30.2k0.0k$0.01100.0%—
clef:latestdecisionru595.894.6100.095.887.587.593.8100.0100.0100.082.194.254с31.0k0.0k$0.01100.0%—
clef:latestdecisionzh592.791.196.987.579.281.281.287.587.5100.083.987.952с30.3k0.0k$0.01100.0%—
deepseek-flashlowen5100.098.498.898.3100.095.095.0100.0100.0100.096.498.2639с42.4k51.2k$0.0794.3%100.0%
deepseek-flashlowru5100.098.298.897.5100.096.293.8100.0100.0100.095.098.0732с50.0k59.3k$0.0992.2%99.8%
deepseek-flashlowzh5100.098.496.996.7100.093.897.5100.0100.097.595.797.9699с44.7k59.6k$0.0891.6%100.0%
gemma4:e2boffen568.360.460.657.977.575.077.575.087.587.535.466.042с38.4k12.8k$0.0081.1%99.0%
gemma4:e2boffru579.670.066.962.575.860.070.0100.090.075.036.870.246с42.3k14.8k$0.0183.1%99.1%
gemma4:e2boffzh576.267.163.853.382.565.072.575.082.587.535.067.653с39.8k13.7k$0.0182.8%99.2%
huihui-ai:pi-100koffen589.683.286.986.285.881.281.297.597.590.073.285.0161с38.9k17.3k$0.0265.2%99.3%
huihui-ai:pi-100koffru594.487.388.885.490.087.580.0100.097.585.070.487.4169с42.5k17.7k$0.0269.3%98.5%
huihui-ai:pi-100koffzh591.284.183.875.895.078.881.2100.097.590.076.484.2131с40.5k13.0k$0.0262.5%99.6%
huihui-ai:pi-100klowen596.589.190.090.097.588.891.295.097.595.086.490.9467с46.0k69.4k$0.0582.4%99.9%
huihui-ai:pi-100klowru596.288.893.890.093.395.090.0100.0100.090.087.190.8461с49.6k66.2k$0.0580.4%99.8%
huihui-ai:pi-100klowzh596.088.690.687.998.391.291.2100.090.097.588.690.5473с47.6k69.1k$0.0680.1%99.7%
huihui-ai:pi-100kmediumen596.089.190.690.897.586.288.8100.0100.090.090.090.8571с38.3k85.8k$0.0784.5%100.0%
huihui-ai:pi-100kmediumru597.390.295.093.895.090.092.5100.0100.095.087.592.3611с41.9k90.0k$0.0782.8%99.8%
huihui-ai:pi-100kmediumzh595.888.990.086.295.890.086.2100.095.095.088.289.8818с40.0k117.7k$0.1079.7%99.8%
medgemma:27boffen578.370.774.472.578.381.277.587.587.575.062.574.2205с37.3k13.9k$0.0286.1%99.9%
medgemma:27boffru576.268.679.475.080.868.880.087.575.067.562.972.7348с41.1k16.9k$0.0480.7%99.6%
medgemma:27boffzh577.571.175.071.276.776.267.587.575.047.559.671.7204с38.6k13.8k$0.0285.5%99.8%
openai/gpt-6-lunalowen599.497.596.294.6100.0100.093.8100.0100.095.093.697.2954с36.3k20.1k$0.0192.2%99.9%
openai/gpt-6-lunalowru598.597.396.994.6100.095.093.8100.0100.097.593.696.81003с41.2k22.8k$0.0289.9%99.8%
openai/gpt-6-lunalowzh598.396.897.595.0100.091.296.2100.0100.0100.093.696.71011с38.9k24.9k$0.0289.5%99.8%
openai/gpt-6-lunamediumen5100.098.2100.097.9100.098.897.5100.0100.095.093.998.31157с36.3k27.6k$0.0290.2%99.6%
openai/gpt-6-lunamediumru5100.098.696.995.0100.098.895.0100.0100.097.592.597.81343с41.2k28.4k$0.0291.2%99.8%
openai/gpt-6-lunamediumzh599.497.799.495.0100.087.595.097.5100.0100.092.996.71142с38.9k29.9k$0.0289.2%99.9%
openai/gpt-6.1-sollowru1100.099.196.995.8100.0100.0100.0100.0100.0100.098.298.8915с41.2k13.4k$0.22—100.0%
openai/gpt-6.1-solmediumru1100.099.196.995.8100.0100.0100.0100.0100.0100.098.298.8934с41.2k14.6k$0.23—100.0%
orcaoffru594.487.189.483.390.885.082.5100.097.587.569.687.1226с42.5k15.8k$0.0367.9%99.4%
orcaonen188.988.90.00.00.00.00.00.00.00.0—88.976с3.1k5.7k——100.0%
orcaonru597.790.292.590.895.097.590.0100.0100.090.087.591.91469с42.0k90.1k$0.1784.1%99.8%
ornith-1.5:35boffen590.683.878.175.498.381.283.8100.092.597.567.984.770с38.9k14.3k$0.0174.3%99.5%
ornith-1.5:35boffru586.079.582.578.883.376.273.8100.087.590.065.780.477с42.5k16.2k$0.0176.7%99.5%
ornith-1.5:35boffzh587.983.280.674.699.278.871.2100.0100.092.567.983.459с40.6k11.5k$0.0176.7%99.5%
ornith-1.5:35bonen1093.085.992.586.799.288.188.1100.097.588.883.888.6583с38.3k163.6k$0.0772.6%99.5%
ornith-1.5:35bonru1092.284.392.889.296.288.890.6100.0100.096.283.488.6569с42.0k160.5k$0.0766.2%99.1%
ornith-1.5:35bonzh1093.686.292.586.999.689.484.4100.097.591.285.088.8565с40.0k159.4k$0.0768.2%99.4%
qwen3.8:latestoffen591.284.889.483.387.583.883.8100.095.080.073.685.3148с38.9k16.5k$0.0269.3%99.5%
qwen3.8:latestoffru593.386.688.185.095.885.083.8100.097.582.571.887.6153с42.5k16.9k$0.0268.6%99.3%
qwen3.8:latestoffzh590.282.981.978.385.886.276.297.597.587.573.983.2118с40.6k12.2k$0.0161.1%99.6%
qwen3.8:latestlowen597.190.295.092.995.088.890.097.5100.090.086.891.7439с46.0k64.6k$0.0581.8%99.8%
qwen3.8:latestlowru596.288.995.692.997.590.090.097.5100.087.587.191.3432с49.7k63.0k$0.0582.4%99.8%
qwen3.8:latestlowzh595.688.991.989.295.087.587.5100.0100.090.085.790.2460с47.7k68.7k$0.0581.8%99.7%
qwen3.8:latestmediumen596.788.894.492.593.387.590.097.5100.092.588.290.8504с38.3k76.5k$0.0683.8%99.9%
qwen3.8:latestmediumru595.689.195.092.597.592.590.0100.097.592.588.991.7568с42.0k84.3k$0.0782.4%99.9%
qwen3.8:latestmediumzh595.088.990.690.499.287.588.8100.0100.092.587.191.0644с40.0k94.2k$0.0883.4%99.7%

anthropic/claude-haiku-5.5 · язык: ru

think: lowитог 96.2% · стаб. 95.9% · время 57.5 мин
think: highитог 97.1% · стаб. — · время 15.1 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✓
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✓
100.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✓
100.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✓
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✓
100.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✓
100.0%
Функции и замыкания
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✓
100.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
90.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓
100.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
40
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
60
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓ · run-06: ✗
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
90.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✓
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✓
100.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✓
100.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✓
100.0%
Ссылки и область видимости
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✓
100.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✓
100
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✓
100
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✓
100.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
90.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓
0
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✗
90.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
90.0%
100
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✓
100
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓
100
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓
100
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓
100
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✓
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✓
90.0%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
75.0%
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✓
75.0%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓
100
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✓
100.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
60
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
96.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓
100
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✓
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✓
100.0%
Symfony
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✓
100.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
20
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✓
92.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓
100
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✓
100
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✓
100.0%
Symfony: конфигурация и сервисы
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✓
100.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
90.0%
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✓
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✓
0
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✗
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✓
90.0%
Symfony: версии
100
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓
100
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓
100.0%
Symfony: 8.2 и будущее
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
40
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
67.5%
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✓
0
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✗
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ✓
0
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✗
0
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✗
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✓
62.5%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
20
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓ · run-06: ✗
92.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓
100
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✓
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✓
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✓
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✗
90.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✓
100
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✓
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✓
100.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✓
100.0%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✓
100.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✓
100.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✓
100.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
80
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✗
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
98.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✓
100
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✓
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✓
100.0%

anthropic/claude-haiku-5.5 · язык: en

think: lowитог 96.4% · стаб. 97.0% · время 56.9 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Functions and closures
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Interfaces, traits, enum
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Exceptions and errors
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Namespaces and autoloading
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
20
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
92.0%
References and scope
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Generators, iterators, SPL
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Configuration and security
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
90.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
20
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗ · run-11: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
92.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
80
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✗
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
72.5%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
20
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓ · run-11: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
92.0%
Symfony
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Symfony: Security and forms
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
90.0%
Symfony: configuration and services
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
90.0%
Symfony: versions
100
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Symfony: 8.2 and beyond
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
62.5%
Twig
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
20
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
92.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
PostgreSQL: transactions and indexes
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100.0%

anthropic/claude-haiku-5.5 · язык: zh

think: lowитог 95.2% · стаб. 94.6% · время 52.8 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
80
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓ · run-16: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
88.0%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
函数与闭包
100
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
90.0%
接口、trait 与 enum
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
80.0%
异常与错误
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
60
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓ · run-16: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
96.0%
命名空间与自动加载
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
引用与作用域
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
生成器、迭代器与 SPL
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
90.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
80
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✗
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
98.0%
PHP:8.6+ 与未来
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
80
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓ · run-16: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
72.5%
整洁架构
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
Symfony
100
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
Symfony:安全与表单
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
90.0%
Symfony:配置与服务
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
Symfony:Messenger
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
90.0%
Symfony:版本
100
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
20
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗ · run-16: ✗
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
92.0%
Symfony:8.2 与未来
100
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
80
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓ · run-16: ✓
100
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
72.5%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
20
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✓
92.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
60
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✗ · run-16: ✓
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
96.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
PostgreSQL:事务与索引
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
80
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✗
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
98.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%
测试:PHPUnit
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100.0%

bonsai-2:27b · язык: ru

think: offитог 75.8% · стаб. 52.7% · время 11.6 мин
think: lowитог 87.0% · стаб. 70.3% · время 282.7 мин
think: mediumитог 86.8% · стаб. 72.3% · время 76.8 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
20
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗
20
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
76.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
82.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
20
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
60
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ⬜ · run-05: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
88.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
60
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
90.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
98.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
80.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗
80
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
92.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
94.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
40
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
0
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
72.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
94.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
Функции и замыкания
20
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✗ · run-02: ⬜ · run-03: ✗ · run-04: ✗ · run-05: ✓
40
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ⬜ · run-04: ✗ · run-05: ✗
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
74.0%
80
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
86.0%
80
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
84.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
20
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ⬜ · run-09: ✓ · run-10: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
86.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
40
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
78.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
86.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
92.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✓ · run-02: ⬜ · run-03: ✗ · run-04: ✓ · run-05: ✓
0
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ⬜
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
58.0%
80
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
92.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
96.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
40
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
20
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
74.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
94.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
60
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✗
20
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
82.0%
Ссылки и область видимости
40
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ⬜ · run-04: ✓ · run-05: ✗
80
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
20
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
74.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ⬜ · run-09: ✓ · run-10: ⬜
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
94.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
94.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
78.0%
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
84.0%
60
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
20
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
20
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
68.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
40
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
88.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
20
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-06: ✗ · run-07: ✗ · run-08: ⬜ · run-09: ✓ · run-10: ✗
90.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
20
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
90.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
60
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
28.0%
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
36.0%
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
20
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
38.0%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
20
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ⬜ · run-04: ✗ · run-05: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
40
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
40
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ⬜ · run-05: ✗
40
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
50.0%
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
40
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-06: ✓ · run-07: ⬜ · run-08: ✓ · run-09: ✓ · run-10: ✗
67.5%
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
65.0%
Чистая архитектура
80
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ⬜ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
40
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ⬜ · run-04: ✓ · run-05: ✗
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
80
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
76.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
98.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
92.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
92.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
92.0%
Symfony
60
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
0
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ⬜ · run-04: ✓ · run-05: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
72.0%
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗
40
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-06: ✓ · run-07: ⬜ · run-08: ✗ · run-09: ✓ · run-10: ✗
78.0%
0
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
80
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
70.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
80
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
60
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
72.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
0
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80.0%
80
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
0
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
78.0%
Symfony: конфигурация и сервисы
80
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
80
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
20
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ⬜ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
40
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ⬜ · run-05: ✗
60
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓ · run-02: ⬜ · run-03: ✓ · run-04: ⬜ · run-05: ✓
40
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
40
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
58.0%
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
80
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
60
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-06: ✗ · run-07: ⬜ · run-08: ✓ · run-09: ✓ · run-10: ✓
78.0%
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
80
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
88.0%
Symfony: Messenger
40
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✗ · run-02: ⬜ · run-03: ⬜ · run-04: ✓ · run-05: ✓
20
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✓ · run-02: ⬜ · run-03: ⬜ · run-04: ✗ · run-05: ✗
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
60
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
80
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
20
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
80
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ⬜ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
80
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
62.0%
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
0
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
76.0%
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
78.0%
Symfony: версии
60
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ⬜ · run-04: ✓ · run-05: ✓
0
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
60.0%
80
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ⬜
20
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
84.0%
100
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ⬜
60
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
74.0%
Symfony: 8.2 и будущее
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ⬜ · run-02: ✓ · run-03: ✓ · run-04: ⬜ · run-05: ✓
80
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
80
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
70.0%
60
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
40
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
75.0%
80
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
40
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
82.5%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
60
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
74.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ⬜ · run-10: ✗
78.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
40
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
62.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
0
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗
20
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
64.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
40
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
84.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
84.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✗ · run-02: ⬜ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
80
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ⬜ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
76.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
86.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
40
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ⬜ · run-05: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
76.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ⬜
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
96.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
98.0%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
96.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
98.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✓ · run-02: ⬜ · run-03: ✓ · run-04: ⬜ · run-05: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
86.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
92.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
96.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
0
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
76.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
88.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90.0%

bonsai-2:27b · язык: en

think: offитог 74.8% · стаб. 46.6% · время 11.3 мин
think: lowитог 87.0% · стаб. 74.0% · время 403.7 мин
think: mediumитог 85.9% · стаб. 70.3% · время 71.5 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
80
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
40
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
80
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
20
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
0
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
80
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60.0%
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-21: ⬜ · run-22: ⬜ · run-23: ✓ · run-24: ⬜ · run-25: ✓
40
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
88.0%
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✓ · run-30: ✗
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✗
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
82.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
60
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
82.0%
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
80
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
92.0%
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
94.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
0
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
80
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
84.0%
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
96.0%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✗
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
0
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
74.0%
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
98.0%
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
96.0%
Functions and closures
80
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
40
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✗
60
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
60
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
60
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
74.0%
40
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✗
60
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✗
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✗
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
84.0%
60
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✗
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
84.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
80.0%
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
90.0%
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
86.0%
Interfaces, traits, enum
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
84.0%
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✗
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ⬜
92.0%
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
96.0%
Exceptions and errors
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✓
40
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
80
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✗
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
66.0%
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
98.0%
80
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
92.0%
Namespaces and autoloading
80
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
60
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✓
60
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
20
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
72.0%
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✓
100
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✗
84.0%
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
80
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
90.0%
References and scope
40
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
40
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
78.0%
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
96.0%
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
96.0%
Generators, iterators, SPL
80
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
78.0%
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
84.0%
80
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
20
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
76.0%
Configuration and security
80
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
40
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
84.0%
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
98.0%
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✓ · run-30: ✗
92.0%
PHP 8.4–8.5
20
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✗
40
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
40
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
22.0%
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
20
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
20
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
44.0%
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
34.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
80
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✗
70.0%
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
20
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✗
40
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-21: ✗ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ✓
20
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
55.0%
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✓ · run-30: ✗
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✗
62.5%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✗
70.0%
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
90.0%
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90.0%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
88.0%
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
88.0%
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90.0%
Symfony
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
60
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
20
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
80
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
68.0%
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✓
60
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✓
82.0%
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
80
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✗
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
74.0%
Symfony: Security and forms
80
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
20
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
62.0%
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-21: ✗ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
0
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-21: ✗ · run-22: ⬜ · run-23: ✗ · run-24: ⬜ · run-25: ✗
72.0%
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
80
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
80
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✓
0
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
78.0%
Symfony: configuration and services
60
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
60
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✗
80
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
40
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
66.0%
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
80
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-21: ✗ · run-22: ✗ · run-23: ⬜ · run-24: ⬜ · run-25: ✗
80.0%
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✗
80
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✓
82.0%
Symfony: Messenger
80
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
40
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
40
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
78.0%
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
80
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
0
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
78.0%
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
60
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✓
20
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
78.0%
Symfony: versions
60
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
20
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
80
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
60
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
40
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
80
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✗
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✓
60.0%
80
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
40
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ✗
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
86.0%
40
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✗
0
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✗
60
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✗
66.0%
Symfony: 8.2 and beyond
80
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
40
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
0
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
40
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
80
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60.0%
40
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ⬜ · run-24: ✗ · run-25: ✓
20
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
20
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
70.0%
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80.0%
Twig
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
60
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
0
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
68.0%
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✓
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-21: ⬜ · run-22: ⬜ · run-23: ⬜ · run-24: ✗ · run-25: ⬜
80.0%
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
0
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
80.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
40
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
80
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
40
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
40
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
52.0%
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
40
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✗
80
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
82.0%
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✗
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✗
80
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
40
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
76.0%
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ✗
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
84.0%
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✗
60
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✗
60
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
70.0%
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
96.0%
PostgreSQL: transactions and indexes
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
92.0%
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
98.0%
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
92.0%
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
94.0%
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
96.0%
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
98.0%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
0
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
80
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
76.0%
80
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✓
0
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-21: ✗ · run-22: ⬜ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
82.0%
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
0
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
88.0%

bonsai-2:27b · язык: zh

think: offитог 73.8% · стаб. 48.0% · время 9.3 мин
think: lowитог 86.8% · стаб. 70.9% · время 281.9 мин
think: mediumитог 85.2% · стаб. 68.9% · время 107.3 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
60
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✗
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
20
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
72.0%
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
60
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✓
60
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-36: ✗ · run-37: ✓ · run-38: ⬜ · run-39: ✓ · run-40: ✓
86.0%
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✗
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✓
60
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
84.0%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
80
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
60
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
76.0%
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
94.0%
80
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✗
90.0%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✗
0
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
76.0%
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
98.0%
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
80
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
60
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✗
0
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
72.0%
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
94.0%
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
函数与闭包
40
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✓
20
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
80
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
40
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
20
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✗
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
62.0%
80
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
86.0%
40
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✗
80
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
80
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✗
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80.0%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
82.0%
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
84.0%
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80.0%
接口、trait 与 enum
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
40
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
60
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✓
20
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✓
76.0%
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
20
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
92.0%
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-41: ✗ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
88.0%
异常与错误
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
20
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
80
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
72.0%
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
96.0%
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
命名空间与自动加载
80
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
60
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
40
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✗
74.0%
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-36: ✓ · run-37: ⬜ · run-38: ✗ · run-39: ✗ · run-40: ✓
92.0%
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
80
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✗
88.0%
引用与作用域
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✓
20
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✓
40
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
72.0%
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
96.0%
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
98.0%
生成器、迭代器与 SPL
80
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
20
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✗
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✓
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
72.0%
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
88.0%
80
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
88.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
20
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
90.0%
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-36: ✓ · run-37: ✓ · run-38: ⬜ · run-39: ✓ · run-40: ⬜
96.0%
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
60
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✗
94.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
80
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✗
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✓
30.0%
40
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✗
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-36: ✗ · run-37: ⬜ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
42.0%
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
80
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
36.0%
PHP:8.6+ 与未来
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
60
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✓
80
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
60
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✓
62.5%
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
40
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✗
60
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✓
60
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✓
65.0%
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✓
80
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
67.5%
整洁架构
80
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
60
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
60
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
60
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✗
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
70.0%
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
88.0%
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
88.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
84.0%
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
90.0%
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
88.0%
Symfony
60
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
0
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✓
80
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
80
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
66.0%
80
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
40
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✗
60
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
82.0%
40
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✗
0
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✓
80
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
72.0%
Symfony:安全与表单
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
80
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
60
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
80
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
20
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
70.0%
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
80
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-36: ⬜ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
70.0%
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✗
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
78.0%
Symfony:配置与服务
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
80
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
40
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
74.0%
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
60
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✗
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
60
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-36: ✗ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✗
72.0%
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
60
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✗
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
80
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
76.0%
Symfony:Messenger
80
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
80
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✓
20
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
80
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
80
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
74.0%
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
0
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✗
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ⬜
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
78.0%
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
60
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
40
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-41: ✗ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80.0%
Symfony:版本
20
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
0
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
80
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
80
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✓
58.0%
40
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗
20
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-36: ✗ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
80
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
76.0%
60
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
40
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✗
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
78.0%
Symfony:8.2 与未来
80
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
0
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
40
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✗
100
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
20
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
100
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
50.0%
80
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
60
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✓
100
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
100
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✗
60
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-36: ✗ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
100
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
77.5%
100
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✓
80
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
60
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✗
80
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
60
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
67.5%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
64.0%
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗
80
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-36: ✗ · run-37: ⬜ · run-38: ✗ · run-39: ✗ · run-40: ✗
80.0%
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-41: ✗ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✓
80
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✓
20
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
80.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
80
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✗
60
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✗
20
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
62.0%
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
88.0%
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
0
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
40
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✓
80
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
74.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
40
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
60
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
76.0%
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
20
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80.0%
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
86.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✗
40
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✗
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
80
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
74.0%
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
98.0%
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
PostgreSQL:事务与索引
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✗
92.0%
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100.0%
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100.0%
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
安全与 OAuth
80
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
80
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
88.0%
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100.0%
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
94.0%
测试:PHPUnit
80
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
40
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
78.0%
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
90.0%
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
86.0%

clef:latest · язык: ru

think: decisionитог 94.2% · стаб. 100.0% · время 4.5 мин · прим. 296/361
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T01-L9-mc · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T01-L10-mc · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
66.7%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L9-mc · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L10-mc · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
75.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L9-mc · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L10-mc · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L9-mc · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L10-mc · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Функции и замыкания
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L9-mc · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L10-mc · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
75.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T06-L9-mc · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L10-mc · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
76.9%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L9-mc · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L10-mc · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L9-mc · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L10-mc · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L9-mc · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L10-mc · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Ссылки и область видимости
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L9-mc · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T10-L10-mc · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
75.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L9-mc · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T11-L10-mc · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
66.7%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L9-mc · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T12-L10-mc · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
75.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
VC-L9-mc · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L10-mc · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
56.2%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
77.8%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T25-L9-mc · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T25-L10-mc · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
58.3%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L9-mc · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L10-mc · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
75.0%
Symfony
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L9-mc · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L10-mc · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T22-L9-mc · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T22-L10-mc · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
75.0%
Symfony: конфигурация и сервисы
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T23-L9-mc · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L10-mc · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L9-mc · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L10-mc · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Symfony: версии
100
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T28-L9-mc · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L10-mc · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Symfony: 8.2 и будущее
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
60.0%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T21-L9-mc · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T21-L10-mc · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
66.7%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L9-mc · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T24-L10-mc · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
66.7%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L9-mc · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L10-mc · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L9-mc · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L10-mc · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
69.2%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L9-mc · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L10-mc · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
66.7%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L9-mc · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L10-mc · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L9-mc · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L10-mc · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T18-L9-mc · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L10-mc · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%

clef:latest · язык: en

think: decisionитог 89.6% · стаб. 100.0% · время 4.6 мин · прим. 296/361
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T01-L9-mc · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T01-L10-mc · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
58.3%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L9-mc · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L10-mc · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
58.3%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L9-mc · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L10-mc · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T04-L9-mc · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L10-mc · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
Functions and closures
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L9-mc · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T05-L10-mc · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
75.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T06-L9-mc · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L10-mc · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
76.9%
Interfaces, traits, enum
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L9-mc · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L10-mc · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
Exceptions and errors
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L9-mc · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L10-mc · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
Namespaces and autoloading
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L9-mc · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L10-mc · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
References and scope
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L9-mc · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L10-mc · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
Generators, iterators, SPL
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L9-mc · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T11-L10-mc · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
75.0%
Configuration and security
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L9-mc · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L10-mc · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
VC-L9-mc · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L10-mc · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
56.2%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
66.7%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T25-L9-mc · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T25-L10-mc · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T26-L9-mc · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L10-mc · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
Symfony
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L9-mc · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L10-mc · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
Symfony: Security and forms
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L9-mc · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L10-mc · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
Symfony: configuration and services
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T23-L9-mc · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L10-mc · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L9-mc · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L10-mc · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
Symfony: versions
0
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T28-L9-mc · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L10-mc · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
Symfony: 8.2 and beyond
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
60.0%
Twig
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T21-L9-mc · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T21-L10-mc · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
66.7%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L9-mc · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L10-mc · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L9-mc · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L10-mc · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L9-mc · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L10-mc · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
69.2%
PostgreSQL: transactions and indexes
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L9-mc · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L10-mc · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L9-mc · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L10-mc · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L9-mc · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L10-mc · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T18-L9-mc · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L10-mc · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%

clef:latest · язык: zh

think: decisionитог 87.9% · стаб. 100.0% · время 4.3 мин · прим. 296/361
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T01-L9-mc · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T01-L10-mc · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
58.3%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L9-mc · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L10-mc · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
66.7%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L9-mc · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L10-mc · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L9-mc · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L10-mc · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
函数与闭包
0
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L9-mc · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T05-L10-mc · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
58.3%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T06-L9-mc · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L10-mc · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
76.9%
接口、trait 与 enum
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L9-mc · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L10-mc · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
异常与错误
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L9-mc · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L10-mc · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
命名空间与自动加载
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T09-L9-mc · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L10-mc · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
75.0%
引用与作用域
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L9-mc · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L10-mc · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
生成器、迭代器与 SPL
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L9-mc · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T11-L10-mc · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
75.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L9-mc · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L10-mc · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
VC-L9-mc · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L10-mc · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
50.0%
PHP:8.6+ 与未来
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
77.8%
整洁架构
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T25-L9-mc · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T25-L10-mc · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
66.7%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T26-L9-mc · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L10-mc · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
66.7%
Symfony
100
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L9-mc · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L10-mc · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
Symfony:安全与表单
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T22-L9-mc · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T22-L10-mc · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
75.0%
Symfony:配置与服务
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T23-L9-mc · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L10-mc · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
75.0%
Symfony:Messenger
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L9-mc · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L10-mc · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
Symfony:版本
0
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T28-L9-mc · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L10-mc · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
75.0%
Symfony:8.2 与未来
100
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
40.0%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T21-L9-mc · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T21-L10-mc · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
66.7%
Bootstrap
0
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T24-L9-mc · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T24-L10-mc · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
50.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L9-mc · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L10-mc · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L9-mc · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L10-mc · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
69.2%
PostgreSQL:事务与索引
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L9-mc · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T17-L10-mc · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
41.7%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L9-mc · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L10-mc · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
75.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T20-L9-mc · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L10-mc · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
75.0%
测试:PHPUnit
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T18-L9-mc · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L10-mc · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%

clef-flash:latest · язык: ru

think: decisionитог 73.8% · стаб. 100.0% · время 1.7 мин · прим. 296/361
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T01-L9-mc · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T01-L10-mc · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
50.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T02-L9-mc · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T02-L10-mc · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
75.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L9-mc · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T03-L10-mc · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
58.3%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L9-mc · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L10-mc · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
66.7%
Функции и замыкания
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L9-mc · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T05-L10-mc · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
75.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T06-L9-mc · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L10-mc · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
53.8%
Интерфейсы, трейты, enum
0
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T07-L9-mc · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L10-mc · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
58.3%
Исключения и ошибки
0
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T08-L9-mc · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L10-mc · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
58.3%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L9-mc · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L10-mc · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
66.7%
Ссылки и область видимости
0
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T10-L9-mc · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T10-L10-mc · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
50.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T11-L9-mc · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T11-L10-mc · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
58.3%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L9-mc · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L10-mc · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
83.3%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
VC-L9-mc · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L10-mc · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
37.5%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
55.6%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T25-L9-mc · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T25-L10-mc · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
41.7%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T26-L9-mc · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T26-L10-mc · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
66.7%
Symfony
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L9-mc · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L10-mc · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
75.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T22-L9-mc · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T22-L10-mc · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
66.7%
Symfony: конфигурация и сервисы
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T23-L9-mc · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L10-mc · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
66.7%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L9-mc · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L10-mc · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
66.7%
Symfony: версии
0
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T28-L9-mc · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T28-L10-mc · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
50.0%
Symfony: 8.2 и будущее
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
50.0%
Twig
0
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T21-L9-mc · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T21-L10-mc · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
33.3%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L9-mc · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L10-mc · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
75.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L9-mc · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T14-L10-mc · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
41.7%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T15-L9-mc · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T15-L10-mc · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
61.5%
PostgreSQL: транзакции и индексы
0
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
0
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L9-mc · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T17-L10-mc · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
33.3%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
0
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L9-mc · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L10-mc · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
75.0%
Безопасность и OAuth
0
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T20-L9-mc · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L10-mc · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
66.7%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ⬜ · run-06: ⬜
100
T18-L9-mc · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T18-L10-mc · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
66.7%

clef-flash:latest · язык: en

think: decisionитог 77.9% · стаб. 100.0% · время 1.6 мин · прим. 296/361
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T01-L9-mc · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T01-L10-mc · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
50.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L9-mc · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T02-L10-mc · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T03-L9-mc · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T03-L10-mc · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
66.7%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L9-mc · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T04-L10-mc · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
50.0%
Functions and closures
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L9-mc · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T05-L10-mc · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T06-L9-mc · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T06-L10-mc · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
61.5%
Interfaces, traits, enum
0
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L9-mc · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T07-L10-mc · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
Exceptions and errors
0
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T08-L9-mc · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T08-L10-mc · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
Namespaces and autoloading
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L9-mc · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T09-L10-mc · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
References and scope
0
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T10-L9-mc · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T10-L10-mc · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
58.3%
Generators, iterators, SPL
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T11-L9-mc · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T11-L10-mc · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
58.3%
Configuration and security
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L9-mc · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T12-L10-mc · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
VC-L9-mc · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VC-L10-mc · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
31.2%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T25-L9-mc · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T25-L10-mc · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
66.7%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T26-L9-mc · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T26-L10-mc · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
58.3%
Symfony
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L9-mc · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T13-L10-mc · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
Symfony: Security and forms
0
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T22-L9-mc · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T22-L10-mc · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
58.3%
Symfony: configuration and services
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T23-L9-mc · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T23-L10-mc · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L9-mc · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T16-L10-mc · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
Symfony: versions
0
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T28-L9-mc · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T28-L10-mc · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
50.0%
Symfony: 8.2 and beyond
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
70.0%
Twig
0
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T21-L9-mc · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T21-L10-mc · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
41.7%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L9-mc · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T24-L10-mc · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
66.7%
Doctrine
0
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L9-mc · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T14-L10-mc · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
58.3%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
0
T15-L9-mc · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T15-L10-mc · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
46.2%
PostgreSQL: transactions and indexes
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T17-L9-mc · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T17-L10-mc · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
50.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L9-mc · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T19-L10-mc · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
83.3%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
0
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L9-mc · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T20-L10-mc · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
75.0%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-07: ⬜ · run-08: ⬜ · run-09: ⬜ · run-10: ⬜ · run-11: ⬜
100
T18-L9-mc · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓
0
T18-L10-mc · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗
66.7%

clef-flash:latest · язык: zh

think: decisionитог 75.0% · стаб. 100.0% · время 1.6 мин · прим. 296/361
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T01-L9-mc · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T01-L10-mc · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
58.3%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L9-mc · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T02-L10-mc · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T03-L9-mc · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T03-L10-mc · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
75.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L9-mc · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T04-L10-mc · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
41.7%
函数与闭包
100
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L9-mc · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T05-L10-mc · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
66.7%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T06-L9-mc · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T06-L10-mc · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
61.5%
接口、trait 与 enum
0
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L9-mc · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T07-L10-mc · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
66.7%
异常与错误
0
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T08-L9-mc · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T08-L10-mc · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
66.7%
命名空间与自动加载
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L9-mc · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T09-L10-mc · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
58.3%
引用与作用域
0
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L9-mc · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T10-L10-mc · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
58.3%
生成器、迭代器与 SPL
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T11-L9-mc · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T11-L10-mc · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
50.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L9-mc · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T12-L10-mc · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
VC-L9-mc · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VC-L10-mc · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
43.8%
PHP:8.6+ 与未来
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
55.6%
整洁架构
0
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T25-L9-mc · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T25-L10-mc · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
50.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T26-L9-mc · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T26-L10-mc · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
58.3%
Symfony
100
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L9-mc · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T13-L10-mc · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
83.3%
Symfony:安全与表单
0
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T22-L9-mc · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T22-L10-mc · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
50.0%
Symfony:配置与服务
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T23-L9-mc · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T23-L10-mc · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
66.7%
Symfony:Messenger
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T16-L9-mc · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T16-L10-mc · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
75.0%
Symfony:版本
0
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T28-L9-mc · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T28-L10-mc · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
58.3%
Symfony:8.2 与未来
100
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
50.0%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T21-L9-mc · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T21-L10-mc · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
41.7%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T24-L9-mc · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T24-L10-mc · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
58.3%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L9-mc · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T14-L10-mc · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
58.3%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T15-L9-mc · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T15-L10-mc · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
61.5%
PostgreSQL:事务与索引
0
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
0
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T17-L9-mc · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T17-L10-mc · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
25.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L9-mc · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T19-L10-mc · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
75.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
0
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L9-mc · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T20-L10-mc · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
75.0%
测试:PHPUnit
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-12: ⬜ · run-13: ⬜ · run-14: ⬜ · run-15: ⬜ · run-16: ⬜
100
T18-L9-mc · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓ · run-16: ✓
0
T18-L10-mc · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗ · run-16: ✗
75.0%

deepseek-flash · язык: ru

think: lowитог 98.0% · стаб. 92.2% · время 61.0 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Функции и замыкания
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Ссылки и область видимости
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
96.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
96.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
90.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
98.0%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
77.5%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
94.0%
Symfony
60
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
96.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Symfony: конфигурация и сервисы
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Symfony: версии
100
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Symfony: 8.2 и будущее
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
90.0%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
94.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
96.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
90.0%

deepseek-flash · язык: en

think: lowитог 98.2% · стаб. 94.3% · время 53.2 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Functions and closures
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Interfaces, traits, enum
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Exceptions and errors
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Namespaces and autoloading
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
References and scope
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Generators, iterators, SPL
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
94.0%
Configuration and security
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
96.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
98.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80.0%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
92.0%
Symfony
60
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
96.0%
Symfony: Security and forms
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
98.0%
Symfony: configuration and services
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Symfony: versions
100
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Symfony: 8.2 and beyond
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
80
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
95.0%
Twig
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
92.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
PostgreSQL: transactions and indexes
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
92.0%

deepseek-flash · язык: zh

think: lowитог 97.9% · стаб. 91.6% · время 58.3 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
函数与闭包
100
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
98.0%
接口、trait 与 enum
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
异常与错误
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
命名空间与自动加载
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
引用与作用域
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
生成器、迭代器与 SPL
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
94.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
90.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
PHP:8.6+ 与未来
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
40
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
77.5%
整洁架构
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90.0%
Symfony
0
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90.0%
Symfony:安全与表单
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
Symfony:配置与服务
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
Symfony:Messenger
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
Symfony:版本
100
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
Symfony:8.2 与未来
100
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
92.5%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
98.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
98.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
PostgreSQL:事务与索引
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
测试:PHPUnit
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
92.0%

gemma4:e2b · язык: ru

think: offитог 70.2% · стаб. 83.1% · время 3.8 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ⬜ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
58.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
84.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
20
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
62.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80.0%
Функции и замыкания
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
72.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
70.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
40
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
92.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
70.0%
Ссылки и область видимости
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
70.0%
Генераторы, итераторы, SPL
0
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
68.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
68.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
10.0%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
25.0%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
0
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
20
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
0
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
48.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
50.0%
Symfony
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
62.0%
Symfony: конфигурация и сервисы
0
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
0
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
66.0%
Symfony: Messenger
0
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
40
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
0
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
40
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
44.0%
Symfony: версии
0
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
0
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
42.0%
Symfony: 8.2 и будущее
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
40
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
55.0%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
72.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
70.0%
PostgreSQL: транзакции и индексы
0
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
68.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
90.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
0
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
72.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60.0%

gemma4:e2b · язык: en

think: offитог 66.0% · стаб. 81.1% · время 3.5 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
38.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
74.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80.0%
Arrays
40
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
80
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
40
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✗
0
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
44.0%
Functions and closures
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
50.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ⬜
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
78.0%
Interfaces, traits, enum
0
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
42.0%
Exceptions and errors
0
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80.0%
Namespaces and autoloading
0
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
0
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
60.0%
References and scope
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%
Generators, iterators, SPL
0
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
80
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
62.0%
Configuration and security
0
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
60
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗
56.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
10.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
25.0%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
20
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
0
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
52.0%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
72.0%
Symfony
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
0
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
62.0%
Symfony: Security and forms
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
50.0%
Symfony: configuration and services
20
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
20
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
0
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
60
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
52.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%
Symfony: versions
0
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
40
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
0
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
44.0%
Symfony: 8.2 and beyond
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
20
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
40
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
55.0%
Twig
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
64.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
70.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80.0%
PostgreSQL: transactions and indexes
0
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
68.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%

gemma4:e2b · язык: zh

think: offитог 67.6% · стаб. 82.8% · время 4.5 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
50.0%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
78.0%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
20
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
82.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
64.0%
函数与闭包
100
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60.0%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
72.0%
接口、trait 与 enum
0
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
0
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
52.0%
异常与错误
60
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
82.0%
命名空间与自动加载
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
68.0%
引用与作用域
0
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
40
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
64.0%
生成器、迭代器与 SPL
0
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
70.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
66.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
10.0%
PHP:8.6+ 与未来
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
25.0%
整洁架构
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
0
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
50.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60.0%
Symfony
0
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
40
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
20
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
56.0%
Symfony:安全与表单
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
70.0%
Symfony:配置与服务
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
0
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
20
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
70.0%
Symfony:Messenger
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
0
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
48.0%
Symfony:版本
0
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
20.0%
Symfony:8.2 与未来
100
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
20
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
40.0%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
76.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
72.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80.0%
PostgreSQL:事务与索引
0
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
76.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
70.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
20
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
20
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
70.0%
测试:PHPUnit
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
70.0%

huihui-ai:pi-100k · язык: ru

think: offитог 87.4% · стаб. 69.3% · время 14.0 мин
think: lowитог 90.8% · стаб. 80.4% · время 38.4 мин
think: mediumитог 92.3% · стаб. 82.8% · время 50.9 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
20
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-62: ✗ · run-63: ✗ · run-64: ✓ · run-65: ✗ · run-66: ✗
60
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✗ · run-66: ✓
88.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
40
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-67: ✓ · run-68: ✗ · run-69: ✓ · run-70: ✗ · run-71: ✗
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
60
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-67: ✓ · run-68: ✗ · run-69: ✓ · run-70: ✓ · run-71: ✗
80
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✗ · run-71: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
88.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
40
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✓ · run-96: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
40
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✗ · run-96: ✗
80
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✓ · run-96: ✓
80
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-92: ✗ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
84.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✗ · run-66: ✗
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✗ · run-65: ✗ · run-66: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
92.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✗ · run-71: ✓
80
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✗ · run-71: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✗
94.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-62: ✓ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
88.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
0
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
90.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
80
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✓ · run-96: ✓
40
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-92: ✗ · run-93: ✗ · run-94: ✓ · run-95: ✗ · run-96: ✓
92.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
40
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-62: ✓ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
82.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100.0%
Функции и замыкания
20
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✓ · run-66: ✗
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
90.0%
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100.0%
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✗ · run-66: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
98.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-67: ✓ · run-68: ✗ · run-69: ✓ · run-70: ✓ · run-71: ✓
98.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✗
60
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✗
90.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
60
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-67: ✓ · run-68: ✗ · run-69: ✗ · run-70: ✓ · run-71: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
60
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✗ · run-70: ✓ · run-71: ✗
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
92.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
80
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✗
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
80
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✓ · run-96: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
96.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-62: ✗ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
86.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-67: ✓ · run-68: ✓ · run-69: ✗ · run-70: ✓ · run-71: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
98.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
60
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
40
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-62: ✓ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✓
88.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
20
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
92.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
20
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
92.0%
Ссылки и область видимости
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✗ · run-66: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
20
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✓
88.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
80
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-92: ✗ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
98.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-62: ✓ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-62: ✓ · run-63: ⬜ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
82.0%
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
60
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✗ · run-70: ✓ · run-71: ✗
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-67: ✓ · run-68: ✓ · run-69: ✗ · run-70: ✓ · run-71: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
84.0%
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
80
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✗
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
88.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
40
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-62: ✗ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✗
84.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
20
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✓ · run-71: ✗
92.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
20
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-92: ✗ · run-93: ✓ · run-94: ✗ · run-95: ✗ · run-96: ✗
92.0%
PHP 8.4–8.5
40
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✓ · run-66: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
40.0%
40
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-67: ✗ · run-68: ✓ · run-69: ✓ · run-70: ✗ · run-71: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
20
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-67: ✓ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
46.0%
20
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
42.0%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
60
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✗ · run-66: ✓
80
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✓
60
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✗
80
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
40
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ⬜ · run-66: ✗
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✗ · run-65: ✗ · run-66: ✓
60.0%
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
20
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-67: ✗ · run-68: ✓ · run-69: ✗ · run-70: ✗ · run-71: ✗
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
20
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-67: ✗ · run-68: ✗ · run-69: ✓ · run-70: ✗ · run-71: ✗
55.0%
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
60
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✗ · run-96: ✗
20
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-92: ✓ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
60
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-92: ✓ · run-93: ✗ · run-94: ✓ · run-95: ✓ · run-96: ✗
67.5%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
40
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-62: ✓ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✓
84.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
80
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✓ · run-96: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
98.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
88.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
20
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-67: ✗ · run-68: ✓ · run-69: ✗ · run-70: ✗ · run-71: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
92.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
60
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✗ · run-96: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
86.0%
Symfony
60
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✗ · run-66: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
84.0%
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100.0%
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✓
20
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-62: ✗ · run-63: ✓ · run-64: ✗ · run-65: ✗ · run-66: ✗
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
20
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-62: ✗ · run-63: ✗ · run-64: ✓ · run-65: ✗ · run-66: ✗
40
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✗ · run-66: ✗
74.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-67: ✗ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
0
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
88.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
60
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-92: ✗ · run-93: ✓ · run-94: ✓ · run-95: ✗ · run-96: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
60
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-92: ✗ · run-93: ✗ · run-94: ✓ · run-95: ✓ · run-96: ✓
0
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
82.0%
Symfony: конфигурация и сервисы
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
40
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✗ · run-66: ✗
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
94.0%
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
60
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-67: ✗ · run-68: ✓ · run-69: ✓ · run-70: ✗ · run-71: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
96.0%
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
40
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-92: ✗ · run-93: ✓ · run-94: ✗ · run-95: ✓ · run-96: ✗
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
94.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
40
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-62: ✗ · run-63: ✓ · run-64: ✗ · run-65: ✗ · run-66: ✓
60
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
86.0%
80
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-67: ✗ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
40
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✓ · run-71: ✓
40
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✗ · run-70: ✗ · run-71: ✗
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✗ · run-71: ✓
84.0%
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
80
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✗ · run-96: ✓
60
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✗ · run-96: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
94.0%
Symfony: версии
80
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ⬜ · run-65: ✓ · run-66: ✗
80
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
80
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✗ · run-66: ✓
78.0%
20
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-67: ✓ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✗
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✗ · run-70: ✓ · run-71: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
60
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-67: ✓ · run-68: ✗ · run-69: ✗ · run-70: ✓ · run-71: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
84.0%
80
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✗ · run-96: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
80
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✗ · run-96: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
96.0%
Symfony: 8.2 и будущее
40
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-62: ✗ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✗
60
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-62: ✗ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-62: ✗ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✓
80
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-62: ✓ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80.0%
60
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✗ · run-71: ✗
40
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-67: ✓ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✗ · run-71: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
85.0%
80
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✓ · run-96: ✓
40
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-92: ✓ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
80
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✓ · run-96: ✓
87.5%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
80
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
20
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-62: ✗ · run-63: ✗ · run-64: ✓ · run-65: ✗ · run-66: ✗
70.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
20
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-67: ✗ · run-68: ✓ · run-69: ✗ · run-70: ✗ · run-71: ✗
80
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-67: ✓ · run-68: ✗ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
0
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
70.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
20
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-92: ✓ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
0
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-92: ✗ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✗
72.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
0
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✗ · run-66: ✗
60
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-62: ✗ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
40
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✗ · run-66: ✗
70.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
40
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-67: ✗ · run-68: ✗ · run-69: ✓ · run-70: ✓ · run-71: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-67: ✓ · run-68: ✗ · run-69: ✓ · run-70: ✓ · run-71: ✓
92.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
60
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-92: ✗ · run-93: ✓ · run-94: ✗ · run-95: ✓ · run-96: ✓
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
96.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✗
80
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
20
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✓ · run-66: ⬜
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
84.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✗
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-67: ✓ · run-68: ✗ · run-69: ✓ · run-70: ✓ · run-71: ✓
0
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✗
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-67: ✗ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
84.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
40
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-92: ✓ · run-93: ✗ · run-94: ✗ · run-95: ✗ · run-96: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
40
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-92: ✗ · run-93: ✓ · run-94: ✓ · run-95: ✗ · run-96: ✗
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
88.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
60
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-62: ✗ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
60
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-62: ✗ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
92.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100.0%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-62: ✓ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
80
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✗
96.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
80
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-67: ✓ · run-68: ✓ · run-69: ✗ · run-70: ✓ · run-71: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
98.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
60
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-92: ✗ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✗
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
96.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
40
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-62: ✗ · run-63: ✗ · run-64: ✗ · run-65: ✓ · run-66: ✓
40
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-62: ✗ · run-63: ✗ · run-64: ✓ · run-65: ✓ · run-66: ✗
60
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-62: ✗ · run-63: ✓ · run-64: ✗ · run-65: ✓ · run-66: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-62: ✓ · run-63: ✓ · run-64: ✓ · run-65: ✓ · run-66: ✓
84.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
20
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-67: ✗ · run-68: ✗ · run-69: ✗ · run-70: ✗ · run-71: ✓
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-67: ✓ · run-68: ✓ · run-69: ✓ · run-70: ✓ · run-71: ✓
92.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
60
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-92: ✓ · run-93: ✓ · run-94: ✗ · run-95: ✓ · run-96: ✗
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-92: ✓ · run-93: ✓ · run-94: ✓ · run-95: ✓ · run-96: ✓
96.0%

huihui-ai:pi-100k · язык: en

think: offитог 85.0% · стаб. 65.2% · время 13.4 мин
think: lowитог 90.9% · стаб. 82.4% · время 38.9 мин
think: mediumитог 90.8% · стаб. 84.5% · время 47.6 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
0
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✗
40
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-72: ✗ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✗
20
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-72: ✓ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
70.0%
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-77: ✓ · run-78: ✗ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
60
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-77: ✗ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✗
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
40
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-77: ✓ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✓
100
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
88.0%
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
60
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✗ · run-98: ✗ · run-99: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
60
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-100: ✗ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✗
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
20
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✓
100
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
84.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
80
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
40
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-72: ✗ · run-73: ✓ · run-74: ✗ · run-75: ✗ · run-76: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
88.0%
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✗ · run-81: ✓
40
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-77: ✓ · run-78: ✓ · run-79: ✗ · run-80: ✗ · run-81: ✗
92.0%
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
40
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-100: ✓ · run-101: ✓ · run-97: ✗ · run-98: ✗ · run-99: ✗
94.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
0
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
88.0%
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
0
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
90.0%
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
20
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-100: ✗ · run-101: ✓ · run-97: ✗ · run-98: ✗ · run-99: ✗
92.0%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
40
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-72: ✗ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✗
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-72: ✗ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
0
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
78.0%
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100.0%
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✗ · run-99: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
98.0%
Functions and closures
40
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-72: ⬜ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
60
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✗
60
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80.0%
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100.0%
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✗ · run-98: ✓ · run-99: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
98.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
96.0%
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100.0%
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100.0%
Interfaces, traits, enum
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
40
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✗ · run-76: ✗
90.0%
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✗ · run-80: ✓ · run-81: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
98.0%
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100.0%
Exceptions and errors
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-72: ✓ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
88.0%
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-77: ✗ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
98.0%
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✗ · run-99: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✗ · run-98: ✓ · run-99: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
96.0%
Namespaces and autoloading
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-72: ✗ · run-73: ✗ · run-74: ✓ · run-75: ✗ · run-76: ✗
40
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✗ · run-76: ✗
100
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
86.0%
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
20
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✓ · run-81: ✗
100
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
92.0%
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
0
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
100
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
90.0%
References and scope
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
40
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-72: ✓ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✓
86.0%
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100.0%
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
60
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-100: ✓ · run-101: ✗ · run-97: ✗ · run-98: ✓ · run-99: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
96.0%
Generators, iterators, SPL
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
84.0%
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-77: ✗ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
20
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
20
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✓ · run-81: ✗
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
72.0%
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
90.0%
Configuration and security
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ⬜ · run-76: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
20
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✗
88.0%
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✗
98.0%
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
40
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-100: ✗ · run-101: ✗ · run-97: ✓ · run-98: ✓ · run-99: ✗
94.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✗
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
34.0%
60
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-77: ✗ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
46.0%
20
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-100: ✓ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-100: ✗ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
40.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
80
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
60
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-72: ✓ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✓
70.0%
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
80
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-77: ✗ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
20
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-77: ✗ · run-78: ✓ · run-79: ✗ · run-80: ✗ · run-81: ✗
60
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✗ · run-81: ✗
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
0
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
57.5%
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
80
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✗ · run-98: ✓ · run-99: ✓
100
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✗
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
0
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
70.0%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
86.0%
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
90.0%
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
90.0%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✗
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
82.0%
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
20
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-77: ✗ · run-78: ✓ · run-79: ✗ · run-80: ✗ · run-81: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
92.0%
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✗ · run-99: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
88.0%
Symfony
80
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
100
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
40
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-72: ✓ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✗
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
0
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
80.0%
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✗ · run-80: ✓ · run-81: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
98.0%
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-100: ✓ · run-101: ✓ · run-97: ✗ · run-98: ✓ · run-99: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
98.0%
Symfony: Security and forms
80
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✗
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✗
20
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✗
74.0%
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
60
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-77: ✗ · run-78: ✗ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
20
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-77: ✗ · run-78: ✗ · run-79: ✓ · run-80: ✗ · run-81: ✗
88.0%
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-100: ✓ · run-101: ✗ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✗
96.0%
Symfony: configuration and services
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
90.0%
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
60
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✗ · run-81: ✗
20
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-77: ✗ · run-78: ✓ · run-79: ✗ · run-80: ✗ · run-81: ✗
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
88.0%
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✗
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
20
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-100: ✗ · run-101: ✗ · run-97: ✓ · run-98: ✗ · run-99: ✗
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✗ · run-99: ✓
88.0%
Symfony: Messenger
80
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
60
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✗ · run-76: ✓
60
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
86.0%
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
60
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✗ · run-81: ✗
20
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-77: ✗ · run-78: ✗ · run-79: ✓ · run-80: ✗ · run-81: ✗
80
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✗ · run-81: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-77: ✗ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
84.0%
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
20
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✓ · run-99: ✗
20
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-100: ✗ · run-101: ✗ · run-97: ✓ · run-98: ✗ · run-99: ✗
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-100: ✓ · run-101: ✗ · run-97: ✓ · run-98: ✓ · run-99: ✓
82.0%
Symfony: versions
100
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✗
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-72: ✓ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
80.0%
40
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-77: ✗ · run-78: ✗ · run-79: ✓ · run-80: ✗ · run-81: ✓
100
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✗
92.0%
100
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✗ · run-99: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
60
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-100: ✗ · run-101: ✗ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
94.0%
Symfony: 8.2 and beyond
60
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✗
60
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-72: ✗ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
80
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
85.0%
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
20
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-77: ✗ · run-78: ✗ · run-79: ✓ · run-80: ✗ · run-81: ✗
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-77: ✓ · run-78: ✗ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
87.5%
60
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-100: ✓ · run-101: ✗ · run-97: ✓ · run-98: ✗ · run-99: ✓
60
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-100: ✓ · run-101: ✗ · run-97: ✗ · run-98: ✓ · run-99: ✓
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
90.0%
Twig
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✗ · run-76: ✓
40
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-72: ✗ · run-73: ✓ · run-74: ✗ · run-75: ✗ · run-76: ✓
80.0%
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
0
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
0
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-77: ✗ · run-78: ✗ · run-79: ✗ · run-80: ✗ · run-81: ✗
70.0%
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
20
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-100: ✗ · run-101: ✗ · run-97: ✓ · run-98: ✗ · run-99: ✗
0
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✗
72.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
60
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✓
20
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-72: ✗ · run-73: ✗ · run-74: ✓ · run-75: ✗ · run-76: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-72: ✓ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✗
40
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-72: ✗ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✗
40
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✗ · run-76: ✗
68.0%
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
60
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-77: ✓ · run-78: ✗ · run-79: ✓ · run-80: ✗ · run-81: ✓
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-77: ✓ · run-78: ✓ · run-79: ✗ · run-80: ✓ · run-81: ✓
94.0%
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
20
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✓
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
92.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
40
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-72: ✗ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
40
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-72: ✓ · run-73: ✗ · run-74: ✗ · run-75: ✗ · run-76: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-72: ✗ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
84.0%
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-77: ✓ · run-78: ✗ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
98.0%
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
60
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✗ · run-98: ✓ · run-99: ✗
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
96.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-72: ✗ · run-73: ✓ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
92.0%
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
60
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-77: ✓ · run-78: ✗ · run-79: ✓ · run-80: ✓ · run-81: ✗
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
96.0%
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-100: ✗ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
98.0%
PostgreSQL: transactions and indexes
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-72: ✗ · run-73: ✗ · run-74: ✗ · run-75: ✓ · run-76: ✗
80
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
90.0%
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100.0%
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✗ · run-75: ✓ · run-76: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
98.0%
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
60
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-77: ✗ · run-78: ✓ · run-79: ✗ · run-80: ✓ · run-81: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
96.0%
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-72: ✓ · run-73: ✗ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
80
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✗
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
96.0%
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
80
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-77: ✓ · run-78: ✗ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
60
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-77: ✗ · run-78: ✓ · run-79: ✓ · run-80: ✗ · run-81: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
94.0%
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
80
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-100: ✗ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
98.0%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
20
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-72: ✗ · run-73: ✗ · run-74: ✓ · run-75: ✗ · run-76: ✗
20
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-72: ✗ · run-73: ✓ · run-74: ✗ · run-75: ✗ · run-76: ✗
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-72: ✓ · run-73: ✓ · run-74: ✓ · run-75: ✓ · run-76: ✓
84.0%
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
60
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-77: ✓ · run-78: ✓ · run-79: ✗ · run-80: ✓ · run-81: ✗
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-77: ✓ · run-78: ✓ · run-79: ✓ · run-80: ✓ · run-81: ✓
96.0%
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
20
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-100: ✗ · run-101: ✗ · run-97: ✗ · run-98: ✗ · run-99: ✓
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-100: ✓ · run-101: ✓ · run-97: ✓ · run-98: ✓ · run-99: ✓
92.0%

huihui-ai:pi-100k · язык: zh

think: offитог 84.2% · стаб. 62.5% · время 10.9 мин
think: lowитог 90.5% · стаб. 80.1% · время 39.4 мин
think: mediumитог 89.8% · стаб. 79.7% · время 68.1 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-82: ✓ · run-83: ✗ · run-84: ✗ · run-85: ✓ · run-86: ✓
60
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-82: ✗ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✗ · run-86: ✗
60
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✗
60
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-82: ✗ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
78.0%
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
20
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
40
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-87: ✗ · run-88: ✗ · run-89: ✓ · run-90: ✗ · run-91: ✓
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
86.0%
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
60
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✗ · run-105: ✓ · run-106: ✗
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
20
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-102: ✗ · run-103: ✗ · run-104: ✓ · run-105: ✗ · run-106: ✗
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
88.0%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✗ · run-86: ✗
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
96.0%
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
60
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-87: ✓ · run-88: ✗ · run-89: ✗ · run-90: ✓ · run-91: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
60
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-87: ✗ · run-88: ✓ · run-89: ✓ · run-90: ✗ · run-91: ✓
92.0%
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
60
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-102: ✗ · run-103: ✗ · run-104: ✓ · run-105: ✓ · run-106: ✓
96.0%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
20
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-82: ✓ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
100
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
92.0%
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
0
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
90.0%
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
40
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-102: ✓ · run-103: ✓ · run-104: ✗ · run-105: ✗ · run-106: ✗
94.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-82: ✗ · run-83: ✓ · run-84: ✓ · run-85: ✗ · run-86: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
0
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
84.0%
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
60
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✗ · run-91: ✗
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
96.0%
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100.0%
函数与闭包
60
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✓
20
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✓ · run-86: ✗
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-82: ✗ · run-83: ✓ · run-84: ✓ · run-85: ✗ · run-86: ✓
60
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✗
80
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
76.0%
80
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-87: ✗ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✗
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
96.0%
80
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-102: ✗ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✗ · run-105: ✓ · run-106: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✗
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
94.0%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-82: ✗ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
94.0%
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100.0%
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100.0%
接口、trait 与 enum
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
20
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-82: ✗ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✗
86.0%
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100.0%
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-102: ✓ · run-103: ✗ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
60
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-102: ✗ · run-103: ✓ · run-104: ✗ · run-105: ✓ · run-106: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
94.0%
异常与错误
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-82: ✗ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
94.0%
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100.0%
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✗ · run-106: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
98.0%
命名空间与自动加载
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
20
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-82: ✓ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
80
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✗
60
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-82: ✗ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✗
86.0%
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
20
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-87: ✗ · run-88: ✗ · run-89: ✓ · run-90: ✗ · run-91: ✗
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✗
90.0%
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
0
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
90.0%
引用与作用域
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✗ · run-86: ✗
80
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✗ · run-86: ✗
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
90.0%
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100.0%
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-102: ✓ · run-103: ✗ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
98.0%
生成器、迭代器与 SPL
80
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
80
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✗
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
82.0%
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
60
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-87: ✓ · run-88: ✗ · run-89: ✓ · run-90: ✓ · run-91: ✗
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
86.0%
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✗ · run-106: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
0
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
78.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✗
40
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✗
88.0%
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✗ · run-91: ✓
98.0%
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
40
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-102: ✗ · run-103: ✗ · run-104: ✓ · run-105: ✗ · run-106: ✓
94.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-82: ✓ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✓
30.0%
20
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✓ · run-91: ✗
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
40
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✓ · run-91: ✓
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
46.0%
20
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✓ · run-106: ✗
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
42.0%
PHP:8.6+ 与未来
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
60
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✗
40
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-82: ✓ · run-83: ✗ · run-84: ✗ · run-85: ✓ · run-86: ✗
80
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
60
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-82: ✓ · run-83: ✗ · run-84: ✗ · run-85: ✓ · run-86: ✓
60
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-82: ✗ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
62.5%
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
20
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✓ · run-91: ✗
40
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✗ · run-90: ✗ · run-91: ✗
20
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-87: ✓ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
60
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-87: ✗ · run-88: ✓ · run-89: ✓ · run-90: ✗ · run-91: ✓
55.0%
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
60
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-102: ✗ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✗
100
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
20
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✓ · run-106: ✗
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
60
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✗ · run-105: ✓ · run-106: ✗
67.5%
整洁架构
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✗
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
86.0%
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
60
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-87: ✓ · run-88: ✓ · run-89: ✗ · run-90: ✗ · run-91: ✓
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
96.0%
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
40
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-102: ✗ · run-103: ✓ · run-104: ✓ · run-105: ✗ · run-106: ✗
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
94.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
0
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80.0%
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
90.0%
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
90.0%
Symfony
80
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
80
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-82: ✗ · run-83: ✗ · run-84: ✓ · run-85: ✗ · run-86: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✗
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-82: ✗ · run-83: ✓ · run-84: ✓ · run-85: ✗ · run-86: ✗
80.0%
100
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✗
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
98.0%
60
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✗ · run-106: ✗
100
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✗ · run-105: ✓ · run-106: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✗ · run-106: ✓
100
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
92.0%
Symfony:安全与表单
80
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
80
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✗
80
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
20
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-82: ✓ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
0
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
72.0%
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✗
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-87: ✓ · run-88: ✓ · run-89: ✗ · run-90: ✓ · run-91: ✓
20
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-87: ✗ · run-88: ✗ · run-89: ✓ · run-90: ✗ · run-91: ✗
88.0%
80
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-102: ✓ · run-103: ✗ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
40
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-102: ✗ · run-103: ✓ · run-104: ✗ · run-105: ✗ · run-106: ✓
92.0%
Symfony:配置与服务
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✗
80
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✗ · run-86: ✓
60
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-82: ✗ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
84.0%
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-87: ✓ · run-88: ✗ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-87: ✗ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✗ · run-91: ✓
94.0%
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
20
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
92.0%
Symfony:Messenger
80
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✗
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✗
20
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✓
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
84.0%
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
20
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-87: ✓ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
20
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-87: ✓ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
40
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-87: ✗ · run-88: ✗ · run-89: ✓ · run-90: ✗ · run-91: ✓
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
78.0%
80
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-102: ✗ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
20
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✓
60
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✗ · run-105: ✓ · run-106: ✗
80
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-102: ✗ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-102: ✓ · run-103: ✗ · run-104: ✓ · run-105: ✓ · run-106: ✓
82.0%
Symfony:版本
40
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✗ · run-86: ✗
80
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✗
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-82: ✗ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✗ · run-86: ✓
80
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
78.0%
60
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✗ · run-91: ✗
100
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✗ · run-91: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
60
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-87: ✓ · run-88: ✗ · run-89: ✓ · run-90: ✗ · run-91: ✓
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
90.0%
100
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✗
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-102: ✗ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
96.0%
Symfony:8.2 与未来
40
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✓ · run-86: ✓
20
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-82: ✗ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✗
0
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
40
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✗
20
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-82: ✗ · run-83: ✗ · run-84: ✓ · run-85: ✗ · run-86: ✗
100
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✓
80
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✗
45.0%
60
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-87: ✗ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✗
60
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-87: ✓ · run-88: ✗ · run-89: ✗ · run-90: ✓ · run-91: ✓
100
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✗ · run-91: ✓
60
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-87: ✓ · run-88: ✗ · run-89: ✓ · run-90: ✗ · run-91: ✓
60
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-87: ✓ · run-88: ✗ · run-89: ✓ · run-90: ✓ · run-91: ✗
77.5%
40
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ⬜ · run-105: ✗ · run-106: ✗
40
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-102: ✓ · run-103: ✗ · run-104: ✓ · run-105: ✗ · run-106: ✗
60
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-102: ✓ · run-103: ✓ · run-104: ✗ · run-105: ✓ · run-106: ✗
80
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-102: ✗ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
20
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-102: ✗ · run-103: ✗ · run-104: ✓ · run-105: ✗ · run-106: ✗
60
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✗ · run-105: ✓ · run-106: ✗
62.5%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-82: ✗ · run-83: ✓ · run-84: ✓ · run-85: ✗ · run-86: ✗
80
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
20
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-82: ✗ · run-83: ✗ · run-84: ✓ · run-85: ✗ · run-86: ✗
60
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-82: ✗ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
80.0%
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✗ · run-90: ✓ · run-91: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
0
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
0
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-87: ✗ · run-88: ✗ · run-89: ✗ · run-90: ✗ · run-91: ✗
68.0%
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
20
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✓
0
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
72.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✗ · run-86: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
60
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-82: ✓ · run-83: ✗ · run-84: ✗ · run-85: ✓ · run-86: ✓
20
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✓ · run-86: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-82: ✗ · run-83: ✗ · run-84: ✓ · run-85: ✗ · run-86: ✓
80
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-82: ✓ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✓
0
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-82: ✗ · run-83: ✗ · run-84: ✗ · run-85: ✗ · run-86: ✗
66.0%
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✗ · run-90: ✓ · run-91: ✓
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
98.0%
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
0
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-102: ✗ · run-103: ✗ · run-104: ✗ · run-105: ✗ · run-106: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✗ · run-106: ✓
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
88.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-82: ✗ · run-83: ✓ · run-84: ✗ · run-85: ✓ · run-86: ✗
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
94.0%
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
60
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✗ · run-91: ✗
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
96.0%
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
60
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-102: ✗ · run-103: ✗ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
40
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-102: ✗ · run-103: ✗ · run-104: ✓ · run-105: ✓ · run-106: ✗
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
90.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-82: ✗ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-82: ✗ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
96.0%
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100.0%
PostgreSQL:事务与索引
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✗
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
98.0%
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100.0%
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100.0%
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100.0%
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✗
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
98.0%
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
20
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-87: ✗ · run-88: ✗ · run-89: ✓ · run-90: ✗ · run-91: ✗
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
60
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-87: ✓ · run-88: ✗ · run-89: ✗ · run-90: ✓ · run-91: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
88.0%
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
60
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-102: ✓ · run-103: ✗ · run-104: ✓ · run-105: ✗ · run-106: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-102: ✓ · run-103: ✗ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
94.0%
测试:PHPUnit
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
80
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✗
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
40
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-82: ✓ · run-83: ✗ · run-84: ✗ · run-85: ✓ · run-86: ✗
80
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-82: ✓ · run-83: ✗ · run-84: ✓ · run-85: ✓ · run-86: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-82: ✓ · run-83: ✓ · run-84: ✓ · run-85: ✓ · run-86: ✓
90.0%
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
80
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✗
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-87: ✓ · run-88: ✓ · run-89: ✓ · run-90: ✓ · run-91: ✓
98.0%
80
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✗ · run-106: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
80
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-102: ✗ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-102: ✓ · run-103: ✓ · run-104: ✓ · run-105: ✓ · run-106: ✓
96.0%

medgemma:27b · язык: ru

think: offитог 72.7% · стаб. 80.7% · время 29.0 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
40
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
62.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
60
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
0
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
76.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
70.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗
76.0%
Функции и замыкания
0
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
68.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80.0%
Интерфейсы, трейты, enum
0
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
20
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
52.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
68.0%
Пространства имён и автозагрузка
80
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
78.0%
Ссылки и область видимости
0
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
80
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ⬜ · run-05: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
70.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
0
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
86.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
10.0%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
20
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
40
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ⬜ · run-02: ⬜ · run-03: ✓ · run-04: ✗ · run-05: ✓
0
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
45.0%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ⬜
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ⬜ · run-04: ✓ · run-05: ✓
0
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
70.0%
Symfony
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
40
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
72.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
70.0%
Symfony: конфигурация и сервисы
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ⬜ · run-04: ✓ · run-05: ⬜
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
92.0%
Symfony: Messenger
80
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
70.0%
Symfony: версии
80
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
48.0%
Symfony: 8.2 и будущее
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
72.5%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
70.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
88.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
90.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
40
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
0
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
72.0%
PostgreSQL: транзакции и индексы
0
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
90.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
0
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
74.0%

medgemma:27b · язык: en

think: offитог 74.2% · стаб. 86.1% · время 17.1 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
0
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
40
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
54.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
90.0%
Functions and closures
0
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
20
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
60
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
68.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80.0%
Interfaces, traits, enum
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
52.0%
Exceptions and errors
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
84.0%
Namespaces and autoloading
0
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
66.0%
References and scope
40
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
0
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
84.0%
Generators, iterators, SPL
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
90.0%
Configuration and security
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
10.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
50.0%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
72.0%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
78.0%
Symfony
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%
Symfony: Security and forms
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
72.0%
Symfony: configuration and services
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
60
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
78.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
68.0%
Symfony: versions
100
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
0
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
52.0%
Symfony: 8.2 and beyond
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
72.5%
Twig
0
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
0
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
84.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
90.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
74.0%
PostgreSQL: transactions and indexes
0
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
68.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
90.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
90.0%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80.0%

medgemma:27b · язык: zh

think: offитог 71.7% · стаб. 85.5% · время 17.0 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
80
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
58.0%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
82.0%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
82.0%
函数与闭包
0
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
88.0%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
82.0%
接口、trait 与 enum
0
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
48.0%
异常与错误
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
20
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
80
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
66.0%
命名空间与自动加载
0
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
40
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
58.0%
引用与作用域
20
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
20
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
66.0%
生成器、迭代器与 SPL
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
0
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
88.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
10.0%
PHP:8.6+ 与未来
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
65.0%
整洁架构
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
64.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
78.0%
Symfony
100
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80.0%
Symfony:安全与表单
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80.0%
Symfony:配置与服务
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
0
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
78.0%
Symfony:Messenger
40
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
0
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-11: ⬜ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
52.0%
Symfony:版本
100
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
0
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
42.0%
Symfony:8.2 与未来
100
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
75.0%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
68.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
80
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
70.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
88.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
0
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
68.0%
PostgreSQL:事务与索引
0
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
0
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
68.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80.0%
测试:PHPUnit
80
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
48.0%

openai/gpt-6-luna · язык: ru

think: lowитог 96.8% · стаб. 89.9% · время 83.6 мин
think: mediumитог 97.8% · стаб. 91.2% · время 111.9 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-02: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
98.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
40
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓ · run-06: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
80
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓ · run-06: ✓
92.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Функции и замыкания
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
60
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓ · run-06: ✗
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
96.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
60
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗ · run-06: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
96.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Ссылки и область видимости
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
90.0%
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-02: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
88.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
90.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-02: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗
92.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
80
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
88.0%
100
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-02: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
90.0%
PHP: 8.6+ и будущее
80
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
80
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
95.0%
100
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-02: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
92.5%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
20
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
92.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-02: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
98.0%
Symfony
80
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
98.0%
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Symfony: конфигурация и сервисы
20
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓ · run-06: ✗
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
92.0%
0
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-02: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
90.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Symfony: версии
100
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
98.0%
Symfony: 8.2 и будущее
60
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗ · run-06: ✓
100
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
80
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
80.0%
80
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-02: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
85.0%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
60
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓ · run-06: ✗
96.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-02: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
90.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
90.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-02: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
92.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
80
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗ · run-06: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓ · run-06: ✓
0
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗ · run-06: ✗
88.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-02: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-02: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-02: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
88.0%

openai/gpt-6-luna · язык: en

think: lowитог 97.2% · стаб. 92.2% · время 79.5 мин
think: mediumитог 98.3% · стаб. 90.2% · время 96.4 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
98.0%
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
98.0%
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
98.0%
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Functions and closures
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Interfaces, traits, enum
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Exceptions and errors
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Namespaces and autoloading
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
References and scope
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Generators, iterators, SPL
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
90.0%
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
90.0%
Configuration and security
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
90.0%
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
92.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
92.0%
100
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
92.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
82.5%
60
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
40
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
80
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
85.0%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
98.0%
Symfony
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
96.0%
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Symfony: Security and forms
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
92.0%
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Symfony: configuration and services
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Symfony: versions
100
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
98.0%
Symfony: 8.2 and beyond
20
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
82.5%
80
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
90.0%
Twig
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
94.0%
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
92.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90.0%
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
96.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
PostgreSQL: transactions and indexes
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
Testing: PHPUnit
60
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
86.0%
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
88.0%

openai/gpt-6-luna · язык: zh

think: lowитог 96.7% · стаб. 89.5% · время 84.2 мин
think: mediumитог 96.7% · стаб. 89.2% · время 95.2 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
98.0%
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
98.0%
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✗
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
92.0%
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
函数与闭包
100
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
接口、trait 与 enum
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
异常与错误
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
命名空间与自动加载
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
引用与作用域
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
94.0%
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
96.0%
生成器、迭代器与 SPL
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
88.0%
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✗
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
86.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
90.0%
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
92.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
90.0%
100
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
92.0%
PHP:8.6+ 与未来
80
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
60
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
87.5%
100
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
0
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
85.0%
整洁架构
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
86.0%
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80.0%
Symfony
100
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
80
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
Symfony:安全与表单
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
96.0%
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
Symfony:配置与服务
80
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
98.0%
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
Symfony:Messenger
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
98.0%
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
Symfony:版本
100
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
96.0%
100
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
94.0%
Symfony:8.2 与未来
80
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
85.0%
40
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80.0%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
96.0%
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✗
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
88.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-21: ✗ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ✓
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
94.0%
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
96.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
PostgreSQL:事务与索引
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
测试:PHPUnit
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✗
92.0%
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
90.0%

openai/gpt-6.1-sol · язык: ru

think: lowитог 98.8% · стаб. — · время 15.3 мин
think: mediumитог 98.8% · стаб. — · время 15.6 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✓
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✓
100.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-02: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-02: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-02: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-02: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-02: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-02: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-02: ✓
100
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-02: ✓
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-02: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-02: ✓
100.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✓
100.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-02: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-02: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-02: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-02: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-02: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-02: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-02: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-02: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-02: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-02: ✓
100.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✓
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✓
100.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-02: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-02: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-02: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-02: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-02: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-02: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-02: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-02: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-02: ✓
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-02: ✓
100.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✓
100.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-02: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-02: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-02: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-02: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-02: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-02: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-02: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-02: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-02: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-02: ✓
100.0%
Функции и замыкания
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✓
100.0%
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-02: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-02: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-02: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-02: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-02: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-02: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-02: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-02: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-02: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-02: ✓
100.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓
100.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-02: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-02: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-02: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-02: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-02: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-02: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-02: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-02: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-02: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-02: ✓
100.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✓
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✓
100.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-02: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-02: ✓
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-02: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-02: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-02: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-02: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-02: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-02: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-02: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-02: ✓
100.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✓
100.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-02: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-02: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-02: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-02: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-02: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-02: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-02: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-02: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-02: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-02: ✓
100.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✓
100.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-02: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-02: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-02: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-02: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-02: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-02: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-02: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-02: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-02: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-02: ✓
100.0%
Ссылки и область видимости
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✓
100.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-02: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-02: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-02: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-02: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-02: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-02: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-02: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-02: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-02: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-02: ✓
100.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✓
100
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✓
100
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✓
100.0%
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-02: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-02: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-02: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-02: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-02: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-02: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-02: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-02: ✓
100
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-02: ✓
100
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-02: ✓
100.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓
100
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✓
100.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-02: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-02: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-02: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-02: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-02: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-02: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-02: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-02: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓
100
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-02: ✓
100.0%
PHP 8.4–8.5
100
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✓
100
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓
100
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓
100
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✓
100
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✓
100
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✓
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✓
100.0%
100
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-02: ✓
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-02: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-02: ✓
100
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-02: ✓
100
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-02: ✓
100
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-02: ✓
100
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-02: ✓
100
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-02: ✓
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-02: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-02: ✓
100.0%
PHP: 8.6+ и будущее
100
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✓
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✓
87.5%
100
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-02: ✓
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-02: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-02: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-02: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-02: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-02: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-02: ✓
100
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-02: ✓
87.5%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓
100
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✓
100.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-02: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-02: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-02: ✓
100
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-02: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-02: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-02: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-02: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-02: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-02: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-02: ✓
100.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓
100
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✓
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✓
100.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-02: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-02: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-02: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-02: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-02: ✓
100
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-02: ✓
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-02: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-02: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-02: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-02: ✓
100.0%
Symfony
0
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✗
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✓
90.0%
0
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-02: ✗
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-02: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-02: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-02: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-02: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-02: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-02: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-02: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-02: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-02: ✓
90.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓
100
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✓
100
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✓
100.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-02: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-02: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-02: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-02: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-02: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-02: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-02: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-02: ✓
100
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-02: ✓
100
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-02: ✓
100.0%
Symfony: конфигурация и сервисы
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✓
100.0%
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-02: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-02: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-02: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-02: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-02: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-02: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-02: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-02: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-02: ✓
100.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✓
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✓
100
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✓
100.0%
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-02: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-02: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-02: ✓
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-02: ✓
100
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-02: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-02: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-02: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-02: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-02: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-02: ✓
100.0%
Symfony: версии
100
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓
100
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓
100.0%
100
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-02: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-02: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-02: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-02: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-02: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-02: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-02: ✓
100
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-02: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-02: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-02: ✓
100.0%
Symfony: 8.2 и будущее
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✓
100
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ✓
0
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✗
100
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✓
87.5%
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-02: ✓
100
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-02: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-02: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-02: ✓
0
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-02: ✗
100
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-02: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-02: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-02: ✓
87.5%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓
100
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✓
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✓
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✓
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✗
90.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-02: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-02: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-02: ✓
100
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-02: ✓
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-02: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-02: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-02: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-02: ✓
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-02: ✓
100
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-02: ✓
100.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✓
100
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✓
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✓
100.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-02: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-02: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-02: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-02: ✓
100
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-02: ✓
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-02: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-02: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-02: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-02: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-02: ✓
100.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓
100.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-02: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-02: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-02: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-02: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-02: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-02: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-02: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-02: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-02: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-02: ✓
100.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-02: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-02: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-02: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-02: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-02: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-02: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-02: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-02: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-02: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-02: ✓
100.0%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✓
100.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-02: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-02: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-02: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-02: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-02: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-02: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-02: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-02: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-02: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-02: ✓
100.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✓
100.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-02: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-02: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-02: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-02: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-02: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-02: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-02: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-02: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-02: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-02: ✓
100.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✓
100.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-02: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-02: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-02: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-02: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-02: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-02: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-02: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-02: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-02: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-02: ✓
100.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✓
100
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✓
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✓
100.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-02: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-02: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-02: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-02: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-02: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-02: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-02: ✓
100
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-02: ✓
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-02: ✓
0
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-02: ✗
90.0%

orca · язык: ru

think: offитог 87.1% · стаб. 67.9% · время 18.8 мин
think: onитог 91.9% · стаб. 84.1% · время 122.4 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
40
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-04: ✗ · run-08: ✗ · run-14: ✓ · run-20: ✗ · run-26: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-04: ✗ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✓
20
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✓
80
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✓
80.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
40
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✗ · run-19: ✗ · run-25: ✗
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✓ · run-07: ✗ · run-13: ✓ · run-19: ✗ · run-25: ✓
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
90.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
40
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-04: ✓ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✗
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-04: ✓ · run-08: ✗ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
92.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✗ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✗
96.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
0
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
90.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
0
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
90.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✗
80
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✗
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-04: ✓ · run-08: ✗ · run-14: ✓ · run-20: ✗ · run-26: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
0
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
80.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100.0%
Функции и замыкания
40
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-04: ✗ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✗
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
90.0%
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-04: ✓ · run-08: ✗ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
98.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-04: ✓ · run-08: ✗ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-04: ✓ · run-08: ✗ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✗
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
94.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✗ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
96.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✓ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
98.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✗
40
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✓
80
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✓
90.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✗ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
98.0%
Ссылки и область видимости
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-04: ✗ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-04: ✗ · run-08: ✗ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
40
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✓
88.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✗ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
96.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
40
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-04: ✓ · run-08: ✗ · run-14: ✓ · run-20: ✓ · run-26: ✓
20
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-04: ✗ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✗
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
74.0%
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
20
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✗ · run-07: ✗ · run-13: ✓ · run-19: ✗ · run-25: ✗
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
82.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
40
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-04: ✗ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✓
20
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-04: ✗ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✗
86.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✗ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✗
96.0%
PHP 8.4–8.5
20
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-04: ✓ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
20
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-04: ✗ · run-08: ✗ · run-14: ✓ · run-20: ✗ · run-26: ✗
34.0%
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✗ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
38.0%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
40
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✓
80
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-04: ✗ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
0
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-04: ✗ · run-08: ⬜ · run-14: ✗ · run-20: ✗ · run-26: ✗
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-04: ✗ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✓
60.0%
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
60
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✓ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✗
100
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✓ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
0
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
67.5%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
0
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-04: ✗ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✓
86.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
86.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✗ · run-25: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
96.0%
Symfony
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
20
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✗
92.0%
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
98.0%
Symfony: Security и формы
80
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✓
20
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✗
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
20
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✗
20
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-04: ✗ · run-08: ✗ · run-14: ✓ · run-20: ✗ · run-26: ✗
72.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✓ · run-07: ✓ · run-13: ✗ · run-19: ✗ · run-25: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
20
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✓ · run-25: ✗
88.0%
Symfony: конфигурация и сервисы
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✓
80
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-04: ✓ · run-08: ✗ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✓
80
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✓
80
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-04: ✗ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
86.0%
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✗
40
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✓
80
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✓
86.0%
80
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✗ · run-19: ✓ · run-25: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✗ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✗ · run-07: ✓ · run-13: ✓ · run-19: ✗ · run-25: ✓
20
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✓ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
80
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ✓ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✗ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
78.0%
Symfony: версии
40
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-04: ✗ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✗
80
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✓
40
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-04: ✓ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✓
60
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✓
40
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-04: ✓ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✗
72.0%
60
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✗ · run-19: ✗ · run-25: ✓
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
60
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✗ · run-25: ✗
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
92.0%
Symfony: 8.2 и будущее
40
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✗
40
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-04: ✓ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✓
80
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-04: ✗ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
60
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-04: ✗ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✓
100
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
75.0%
80
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✗ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
20
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✓ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✗
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
85.0%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
40
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-04: ✓ · run-08: ✗ · run-14: ✓ · run-20: ✗ · run-26: ✗
60
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✗ · run-26: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
0
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
70.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
0
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✗ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
70.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
20
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-04: ✓ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
0
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
40
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-04: ✗ · run-08: ✗ · run-14: ✓ · run-20: ✗ · run-26: ✓
0
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ✗
66.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
40
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✗ · run-19: ✗ · run-25: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✓ · run-07: ✓ · run-13: ✗ · run-19: ✓ · run-25: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
92.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
20
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-04: ✓ · run-08: ✗ · run-14: ✗ · run-20: ✗ · run-26: ⬜
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
40
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-04: ✗ · run-08: ✗ · run-14: ✓ · run-20: ✓ · run-26: ✗
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
86.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✓ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
20
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✗ · run-07: ✓ · run-13: ✗ · run-19: ✗ · run-25: ✗
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
90.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✗
60
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✗ · run-26: ✗
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
92.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
80
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✓ · run-07: ✗ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
98.0%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
80
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-04: ✗ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
98.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
40
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-04: ✓ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✗
60
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-04: ✓ · run-08: ✓ · run-14: ✗ · run-20: ✓ · run-26: ✗
40
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-04: ✗ · run-08: ✗ · run-14: ✗ · run-20: ✓ · run-26: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-04: ✓ · run-08: ✓ · run-14: ✓ · run-20: ✓ · run-26: ✓
84.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
20
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✓ · run-07: ✗ · run-13: ✗ · run-19: ✗ · run-25: ✗
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✓ · run-07: ✓ · run-13: ✓ · run-19: ✓ · run-25: ✓
92.0%

orca · язык: en

think: onитог 88.9% · стаб. — · время 1.3 мин · прим. 27/240
L1
L2
L3
L4
L5
L6
L7
L8
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-02: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-02: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-02: ✓
0
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-02: ✗
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-02: ✓
0
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-02: ✗
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-02: ✓
0
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-02: ✗
62.5%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-02: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-02: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-02: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-02: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-02: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-02: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-02: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-02: ✓
100.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-02: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-02: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-02: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-02: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-02: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-02: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-02: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-02: ✓
100.0%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-02: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-02: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-02: ✓
0
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-02: ⬜
0
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-02: ⬜
0
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-02: ⬜
0
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-02: ⬜
0
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-02: ⬜
37.5%
Functions and closures
0
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-02: ⬜
0
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-02: ⬜
0
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-02: ⬜
0
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-02: ⬜
0
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-02: ⬜
0
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-02: ⬜
0
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-02: ⬜
0
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-02: ⬜
0.0%
OOP: classes and inheritance
0
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-02: ⬜
0
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-02: ⬜
0
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-02: ⬜
0
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-02: ⬜
0
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-02: ⬜
0
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-02: ⬜
0
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-02: ⬜
0
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-02: ⬜
0.0%
Interfaces, traits, enum
0
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-02: ⬜
0
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-02: ⬜
0
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-02: ⬜
0
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-02: ⬜
0
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-02: ⬜
0
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-02: ⬜
0
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-02: ⬜
0
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-02: ⬜
0.0%
Exceptions and errors
0
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-02: ⬜
0
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-02: ⬜
0
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-02: ⬜
0
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-02: ⬜
0
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-02: ⬜
0
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-02: ⬜
0
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-02: ⬜
0
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-02: ⬜
0.0%
Namespaces and autoloading
0
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-02: ⬜
0
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-02: ⬜
0
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-02: ⬜
0
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-02: ⬜
0
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-02: ⬜
0
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-02: ⬜
0
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-02: ⬜
0
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-02: ⬜
0.0%
References and scope
0
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-02: ⬜
0
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-02: ⬜
0
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-02: ⬜
0
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-02: ⬜
0
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-02: ⬜
0
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-02: ⬜
0
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-02: ⬜
0
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-02: ⬜
0.0%
Generators, iterators, SPL
0
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-02: ⬜
0
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-02: ⬜
0
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-02: ⬜
0
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-02: ⬜
0
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-02: ⬜
0
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-02: ⬜
0
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-02: ⬜
0
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-02: ⬜
0.0%
Configuration and security
0
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-02: ⬜
0
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-02: ⬜
0
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-02: ⬜
0
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-02: ⬜
0
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-02: ⬜
0
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-02: ⬜
0
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-02: ⬜
0
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-02: ⬜
0.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-02: ⬜
0
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-02: ⬜
0
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-02: ⬜
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-02: ⬜
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-02: ⬜
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-02: ⬜
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-02: ⬜
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-02: ⬜
0.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-02: ⬜
0
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-02: ⬜
0
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-02: ⬜
0
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-02: ⬜
0
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-02: ⬜
0
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-02: ⬜
0
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-02: ⬜
0
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-02: ⬜
0.0%
Clean architecture
0
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-02: ⬜
0
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-02: ⬜
0
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-02: ⬜
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-02: ⬜
0
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-02: ⬜
0
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-02: ⬜
0
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-02: ⬜
0
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-02: ⬜
0.0%
DDD
0
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-02: ⬜
0
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-02: ⬜
0
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-02: ⬜
0
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-02: ⬜
0
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-02: ⬜
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-02: ⬜
0
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-02: ⬜
0
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-02: ⬜
0.0%
Symfony
0
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-02: ⬜
0
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-02: ⬜
0
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-02: ⬜
0
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-02: ⬜
0
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-02: ⬜
0
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-02: ⬜
0
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-02: ⬜
0
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-02: ⬜
0.0%
Symfony: Security and forms
0
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-02: ⬜
0
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-02: ⬜
0
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-02: ⬜
0
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-02: ⬜
0
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-02: ⬜
0
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-02: ⬜
0
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-02: ⬜
0
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-02: ⬜
0.0%
Symfony: configuration and services
0
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-02: ⬜
0
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-02: ⬜
0
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-02: ⬜
0
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-02: ⬜
0
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-02: ⬜
0
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-02: ⬜
0
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-02: ⬜
0
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-02: ⬜
0.0%
Symfony: Messenger
0
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-02: ⬜
0
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-02: ⬜
0
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-02: ⬜
0
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-02: ⬜
0
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-02: ⬜
0
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-02: ⬜
0
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-02: ⬜
0
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-02: ⬜
0.0%
Symfony: versions
0
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-02: ⬜
0
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-02: ⬜
0
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-02: ⬜
0
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-02: ⬜
0
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-02: ⬜
0
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-02: ⬜
0
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-02: ⬜
0
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-02: ⬜
0.0%
Symfony: 8.2 and beyond
0
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-02: ⬜
0
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-02: ⬜
0
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-02: ⬜
0
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-02: ⬜
0
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-02: ⬜
0
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-02: ⬜
0
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-02: ⬜
0
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-02: ⬜
0.0%
Twig
0
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-02: ⬜
0
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-02: ⬜
0
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-02: ⬜
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-02: ⬜
0
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-02: ⬜
0
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-02: ⬜
0
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-02: ⬜
0
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-02: ⬜
0.0%
Bootstrap
0
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-02: ⬜
0
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-02: ⬜
0
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-02: ⬜
0
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-02: ⬜
0
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-02: ⬜
0
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-02: ⬜
0
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-02: ⬜
0
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-02: ⬜
0.0%
Doctrine
0
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-02: ⬜
0
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-02: ⬜
0
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-02: ⬜
0
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-02: ⬜
0
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-02: ⬜
0
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-02: ⬜
0
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-02: ⬜
0
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-02: ⬜
0.0%
PostgreSQL
0
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-02: ⬜
0
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-02: ⬜
0
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-02: ⬜
0
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-02: ⬜
0
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-02: ⬜
0
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-02: ⬜
0
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-02: ⬜
0
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-02: ⬜
0.0%
PostgreSQL: transactions and indexes
0
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-02: ⬜
0
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-02: ⬜
0
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-02: ⬜
0
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-02: ⬜
0
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-02: ⬜
0
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-02: ⬜
0
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-02: ⬜
0
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-02: ⬜
0.0%
HTTP and REST API
0
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-02: ⬜
0
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-02: ⬜
0
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-02: ⬜
0
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-02: ⬜
0
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-02: ⬜
0
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-02: ⬜
0
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-02: ⬜
0
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-02: ⬜
0.0%
Security and OAuth
0
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-02: ⬜
0
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-02: ⬜
0
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-02: ⬜
0
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-02: ⬜
0
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-02: ⬜
0
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-02: ⬜
0
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-02: ⬜
0
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-02: ⬜
0.0%
Testing: PHPUnit
0
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-02: ⬜
0
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-02: ⬜
0
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-02: ⬜
0
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-02: ⬜
0
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-02: ⬜
0
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-02: ⬜
0
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-02: ⬜
0
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-02: ⬜
0.0%

ornith-1.5:35b · язык: ru

think: offитог 80.4% · стаб. 76.7% · время 6.4 мин
think: onитог 88.6% · стаб. 66.2% · время 94.9 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
20
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
74.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
90
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
86.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
90.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
10
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
10
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
82.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
50
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
95.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
78.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✗
90
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
93.0%
Функции и замыкания
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80.0%
100
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
50
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
70
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ⬜ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
83.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
90.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
50
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
89.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
92.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
40
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
92.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
96.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
50.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
90
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ⬜ · run-13: ✓ · run-14: ✓ · run-15: ✓
30
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✗ · run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
87.0%
Ссылки и область видимости
0
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
74.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
99.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
90.0%
90
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
60
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
80
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
79.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
0
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
86.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
50
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
95.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
36.0%
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
70
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
31.0%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✗ · run-02: ⬜ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ⬜ · run-02: ✗ · run-03: ✓ · run-04: ⬜ · run-05: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
55.0%
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
70
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
56.2%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
20
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
72.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
91.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
70.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
89.0%
Symfony
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80.0%
90
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
60
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
90
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
92.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
0
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
74.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
30
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
20
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
82.0%
Symfony: конфигурация и сервисы
0
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✗ · run-02: ⬜ · run-03: ⬜ · run-04: ⬜ · run-05: ✗
20
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
76.0%
50
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
90.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ⬜ · run-04: ⬜ · run-05: ✓
100
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ⬜ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
86.0%
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
80
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
70
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-06: ✓ · run-07: ✓ · run-08: ⬜ · run-09: ⬜ · run-10: ✗ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
91.0%
Symfony: версии
0
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ⬜ · run-02: ⬜ · run-03: ⬜ · run-04: ✗ · run-05: ⬜
80
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
0
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
62.0%
80
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
50
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
90.0%
Symfony: 8.2 и будущее
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ⬜ · run-04: ✓ · run-05: ✓
80
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
82.5%
50
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
30
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗ · run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
40
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗ · run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
75.0%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
66.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗ · run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗ · run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
82.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
20
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
66.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗ · run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
70
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
90.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
96.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
99.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
20
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
66.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
95.0%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
90.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
70
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓ · run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
97.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
90.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
0
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
82.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
70
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗ · run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓ · run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
96.0%

ornith-1.5:35b · язык: en

think: offитог 84.7% · стаб. 74.3% · время 5.9 мин
think: onитог 88.6% · стаб. 72.6% · время 97.1 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
54.0%
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
88.0%
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✗
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
30
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-21: ✗ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ✓ · run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✗
83.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
82.0%
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
98.0%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
86.0%
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
96.0%
Functions and closures
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
98.0%
80
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
96.0%
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
50
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✗ · run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✓ · run-30: ✗
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✓ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
87.0%
Interfaces, traits, enum
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
88.0%
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
87.0%
Exceptions and errors
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
98.0%
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
96.0%
Namespaces and autoloading
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
20
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
68.0%
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
50
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
10
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
90
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
0
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
75.0%
References and scope
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
90.0%
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
Generators, iterators, SPL
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
80.0%
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✗
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
70
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ⬜ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
81.0%
Configuration and security
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
60
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✓
92.0%
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
30
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
93.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40.0%
0
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✓ · run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
50
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✓
31.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
60
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✗
20
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
60.0%
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
90
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
10
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
66.2%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
0
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
78.0%
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
10
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
89.0%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
74.0%
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90.0%
Symfony
0
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
60
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
40
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
68.0%
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
70
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
94.0%
Symfony: Security and forms
80
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
20
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
76.0%
90
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✗
10
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✗
83.0%
Symfony: configuration and services
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
80
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
90.0%
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ⬜ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
97.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
70.0%
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
70
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
30
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✓
70
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✗
90
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
80
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗ · run-26: ⬜ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
50
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ⬜ · run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ⬜ · run-30: ✓
77.0%
Symfony: versions
60
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
60
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✗
60
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
20
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
80
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
80
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
60.0%
90
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
10
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
70
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
10
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
78.0%
Symfony: 8.2 and beyond
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✗
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✓
80
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
82.5%
70
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
0
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
50
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
77.5%
Twig
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
60
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
76.0%
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
40
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ⬜ · run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ⬜
87.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
0
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
74.0%
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
10
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗ · run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓ · run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✗ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
85.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
96.0%
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
99.0%
PostgreSQL: transactions and indexes
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
94.0%
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
94.0%
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
0
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
88.0%
50
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✗ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓ · run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
91.0%

ornith-1.5:35b · язык: zh

think: offитог 83.4% · стаб. 76.7% · время 4.9 мин
think: onитог 88.8% · стаб. 68.2% · время 94.2 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
72.0%
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
70
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✗ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
30
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-36: ✗ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✓
88.0%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
90.0%
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
30
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✓
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
30
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
86.0%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
72.0%
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
70
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
95.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
74.0%
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗ · run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
70
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90.0%
函数与闭包
0
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80.0%
50
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
90
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
50
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
88.0%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✗ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
97.0%
接口、trait 与 enum
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
98.0%
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90.0%
异常与错误
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
96.0%
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
70
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✗ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
97.0%
命名空间与自动加载
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
0
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
40
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
80.0%
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
10
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
89.0%
引用与作用域
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
80.0%
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
98.0%
生成器、迭代器与 SPL
0
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
40
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
74.0%
60
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
80
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
83.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
0
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
82.0%
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
50
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ⬜ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
95.0%
PHP 8.4–8.5
20
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✓
38.0%
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
39.0%
PHP:8.6+ 与未来
100
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
80
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
82.5%
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
50
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓ · run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✓
10
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✗
50
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✗
58.8%
整洁架构
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
0
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
78.0%
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
92.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
74.0%
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
89.0%
Symfony
40
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
60
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
78.0%
50
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗ · run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✗
90
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
93.0%
Symfony:安全与表单
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
76.0%
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
70
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
10
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
87.0%
Symfony:配置与服务
0
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✓
80
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
82.0%
60
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✗ · run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✓
90
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✓
93.0%
Symfony:Messenger
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
68.0%
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
70
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✓
100
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✓ · run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ⬜ · run-40: ✗ · run-41: ⬜ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
80
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓ · run-41: ⬜ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
83.0%
Symfony:版本
60
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
20
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
20
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
64.0%
90
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✗
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
10
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
70
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
79.0%
Symfony:8.2 与未来
100
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✗
20
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
100
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✗
62.5%
80
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✗
100
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
30
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-36: ✗ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✗
73.8%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
80
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
0
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
80
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
68.0%
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
70
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
10
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
30
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-36: ⬜ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✗
79.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
64.0%
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗ · run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✗ · run-41: ✗ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
83.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
99.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
98.0%
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
PostgreSQL:事务与索引
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✓
96.0%
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
99.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
98.0%
测试:PHPUnit
80
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
0
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
84.0%
30
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✗
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓ · run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
92.0%

qwen3.8:latest · язык: ru

think: offитог 87.6% · стаб. 68.6% · время 12.8 мин
think: lowитог 91.3% · стаб. 82.4% · время 36.0 мин
think: mediumитог 91.7% · стаб. 82.4% · время 47.3 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Синтаксис и операторы
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
86.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
78.0%
100
T01-L1 · Синтаксис и операторы
Строки в двойных и одинарных кавычках обрабатываются одинаково, разница только в скорости.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T01-L2 · Синтаксис и операторы
Оператор ?? работает по семантике isset и не порождает предупреждений для неопределённых переменных.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T01-L3 · Синтаксис и операторы
Что выведет: echo 'a', 'b';
Верный ответ: ab
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T01-L4 · Синтаксис и операторы
print возвращает значение 1 и может использоваться внутри выражения.
Верный ответ: да
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
100
T01-L5 · Синтаксис и операторы
Оператор ?: (элвис) возвращает левый операнд, если он ложный.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T01-L6 · Синтаксис и операторы
В PHP 8 приоритет оператора конкатенации (.) ниже, чем у сложения и вычитания.
Верный ответ: да
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T01-L7 · Синтаксис и операторы
Выражение 2 ** 3 ** 2 в PHP вычисляется как (2 ** 3) ** 2, то есть 64.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T01-L8 · Синтаксис и операторы
Какую строку выведет: echo 'сумма: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T01-L9 · Синтаксис и операторы
Что выведет этот код? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T01-L10 · Синтаксис и операторы
Что выведет этот код? ```php echo -3 ** 2; ```
Верный ответ: -9
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
86.0%
Типы и сравнения
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
92.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
80
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
96.0%
100
T02-L1 · Типы и сравнения
Массивы при строгом сравнении === считаются равными независимо от порядка элементов.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L2 · Типы и сравнения
Сравнение 0 == false возвращает false, потому что это строгое сравнение.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L3 · Типы и сравнения
В PHP 8 выражение "abc" == 0 возвращает true.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T02-L4 · Типы и сравнения
Значение null при нестрогом сравнении равно одновременно 0, пустой строке и false.
Верный ответ: да
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T02-L5 · Типы и сравнения
Что вернёт выражение: (int) '42abc'?
Верный ответ: 42
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L6 · Типы и сравнения
Что вернёт выражение: '5' + 5?
Верный ответ: 10
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L7 · Типы и сравнения
При приведении к строке значение false превращается в "0".
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T02-L8 · Типы и сравнения
Сравнение 0.1 + 0.2 === 0.3 возвращает false.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T02-L9 · Типы и сравнения
Что выведет этот код? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T02-L10 · Типы и сравнения
Что выведет этот код? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
94.0%
Строки
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
90.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
94.0%
100
T03-L1 · Строки
strrev() корректно переворачивает строку в UTF-8.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L2 · Строки
str_contains('Hello world', 'world') возвращает true.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L3 · Строки
str_pad() умеет дополнять строку только справа.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L4 · Строки
По умолчанию trim() срезает только пробелы, не трогая табы и переводы строк.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L5 · Строки
Сколько БАЙТ вернёт strlen('привет') для строки в UTF-8?
Верный ответ: 12
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L6 · Строки
Что вернёт substr('abcdef', -3)?
Верный ответ: def
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L7 · Строки
ucfirst() изменяет строку, переданную ей, на месте.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L8 · Строки
В heredoc работают интерполяция переменных, а в nowdoc — нет.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T03-L9 · Строки
Что выведет этот код? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T03-L10 · Строки
Что выведет этот код? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
90.0%
Массивы
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
86.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
98.0%
100
T04-L1 · Массивы
Функция sort() сохраняет связь ключей и значений массива.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L2 · Массивы
Строковый ключ '5' в массиве сохраняется как целое число 5.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L3 · Массивы
Функция in_array() по умолчанию использует строгое сравнение (===).
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L4 · Массивы
array_filter() без колбэка удаляет из массива все «пустые» (falsy) элементы.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L5 · Массивы
Функция array_slice() по умолчанию сохраняет исходные числовые ключи массива.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L6 · Массивы
Что вернёт array_slice([10, 20, 30, 40], 1, 2)?
Верный ответ: [20,30]
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L7 · Массивы
Сколько элементов будет в count(['a' => 1] + ['a' => 9, 'b' => 2])?
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T04-L8 · Массивы
Spread-оператор [...$a, ...$b] с PHP 8.1 поддерживает массивы со строковыми ключами.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T04-L9 · Массивы
Что выведет этот код? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T04-L10 · Массивы
Что выведет этот код? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
98.0%
Функции и замыкания
40
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
86.0%
80
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
98.0%
40
T05-L1 · Функции и замыкания
Именованные аргументы нельзя комбинировать с распаковкой массива ...$args в одном вызове.
Верный ответ: нет
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✓
100
T05-L2 · Функции и замыкания
Анонимная функция без use видит переменные внешней области видимости.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L3 · Функции и замыкания
Что вернёт func_num_args() внутри function f($a) { return func_num_args(); } при вызове f(1, 2, 3)?
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L4 · Функции и замыкания
Тело стрелочной функции fn может состоять из нескольких выражений в фигурных скобках.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L5 · Функции и замыкания
Стрелочная функция fn захватывает внешние переменные по ссылке (лениво, при использовании).
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L6 · Функции и замыкания
Замыкание, объявленное как static function () {}, не захватывает $this.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L7 · Функции и замыкания
Что выведет: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L8 · Функции и замыкания
В «слабом» режиме типизации (без strict_types) передача строки "5" в параметр с типом int допустима.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L9 · Функции и замыкания
Что выведет этот код? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T05-L10 · Функции и замыкания
Что выведет этот код? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
94.0%
ООП: классы и наследование
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
96.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
100
T06-L1 · ООП: классы и наследование
PHP поддерживает promotion свойств в конструкторе: public function __construct(private int $x) {}.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L2 · ООП: классы и наследование
Какое ключевое слово запрещает переопределять метод в подклассах?
Верный ответ: final
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L3 · ООП: классы и наследование
Метод, объявленный как final, нельзя переопределить в подклассе.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L4 · ООП: классы и наследование
Свойства родителя с видимостью private доступны в подклассе.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T06-L5 · ООП: классы и наследование
Что вернёт get_class(new class {})? Ответь частью имени до нулевого байта (без пути к файлу).
Верный ответ: class@anonymous
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T06-L6 · ООП: классы и наследование
private-метод родителя не входит в контракт наследования: потомок может объявить метод с тем же именем с любой видимостью.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L7 · ООП: классы и наследование
Магический метод __get() вызывается только для несуществующих свойств.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L8 · ООП: классы и наследование
Что бросит повторное присваивание readonly-свойства — Exception или Error?
Верный ответ: error
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L9 · ООП: классы и наследование
Что выведет этот код? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T06-L10 · ООП: классы и наследование
Что выведет этот код на PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
98.0%
Интерфейсы, трейты, enum
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
60
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
92.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
88.0%
100
T07-L1 · Интерфейсы, трейты, enum
Интерфейс может объявлять константы.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L2 · Интерфейсы, трейты, enum
Какой оператор проверяет, что объект реализует класс или интерфейс?
Верный ответ: instanceof
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T07-L3 · Интерфейсы, трейты, enum
Интерфейс может объявлять статические методы.
Верный ответ: да
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T07-L4 · Интерфейсы, трейты, enum
Оператор instanceof проверяет только наследование классов: интерфейсы он не учитывает.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L5 · Интерфейсы, трейты, enum
Метод интерфейса может иметь реализацию по умолчанию, как метод трейта.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L6 · Интерфейсы, трейты, enum
Абстрактный метод в абстрактном классе может иметь видимость protected.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L7 · Интерфейсы, трейты, enum
Сколько элементов вернёт Foo::cases() для enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T07-L8 · Интерфейсы, трейты, enum
Трейт может объявлять константы.
Верный ответ: да
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L9 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T07-L10 · Интерфейсы, трейты, enum
Что выведет этот код? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
88.0%
Исключения и ошибки
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
90.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
100
T08-L1 · Исключения и ошибки
Интерфейс Throwable — общий предок и для Exception, и для Error.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L2 · Исключения и ошибки
Блок catch (Exception $e) перехватит и TypeError, потому что TypeError в итоге наследуется от Exception.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L3 · Исключения и ошибки
Оператор @ подавляет и исключения тоже.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L4 · Исключения и ошибки
Какой класс ошибки бросит intdiv(5, 0)?
Верный ответ: divisionbyzeroerror
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L5 · Исключения и ошибки
Блок finally выполняется только если исключение было поймано блоком catch.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L6 · Исключения и ошибки
Исключение, выброшенное внутри блока finally, никак не влияет на результат try-блока.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L7 · Исключения и ошибки
Что вернёт выражение: (bool) new Exception('x')?
Верный ответ: true
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L8 · Исключения и ошибки
Функции, зарегистрированные через register_shutdown_function(), выполняются при вызове exit.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L9 · Исключения и ошибки
Что выведет этот код? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T08-L10 · Исключения и ошибки
Что выведет этот код? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
Пространства имён и автозагрузка
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
86.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
100
T09-L1 · Пространства имён и автозагрузка
Директива use App\Service\Mailer; сама по себе подключает файл с классом.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L2 · Пространства имён и автозагрузка
Что пишут после use, чтобы импортировать функцию (а не класс): слово function или const?
Верный ответ: function
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L3 · Пространства имён и автозагрузка
В какой файл (путь от src/) PSR-4 «App\ → src/» положит класс App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L4 · Пространства имён и автозагрузка
Подключение vendor/autoload.php регистрирует обработчики через spl_autoload_register().
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L5 · Пространства имён и автозагрузка
Магическая константа __NAMESPACE__ содержит имя текущего пространства имён.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L6 · Пространства имён и автозагрузка
Относительное имя класса (без ведущего \) в new резолвится от глобального корня.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L7 · Пространства имён и автозагрузка
При маппинге PSR-4 «App\ → src/» класс App\Model\User лежит в файле src/Model/User.php.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L8 · Пространства имён и автозагрузка
Директиву use можно писать внутри тела функции — импорт будет действовать для этой функции.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L9 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T09-L10 · Пространства имён и автозагрузка
Что выведет этот код? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
Ссылки и область видимости
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
60
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
86.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
100
T10-L1 · Ссылки и область видимости
Массивы при присваивании копируются, а не передаются по ссылке.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L2 · Ссылки и область видимости
Что выведет: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L3 · Ссылки и область видимости
Внутри функции пользовательские переменные глобальной области недоступны без global, $GLOBALS или передачи параметром.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L4 · Ссылки и область видимости
unset($GLOBALS['x']) внутри функции удаляет глобальную переменную только для этой функции.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L5 · Ссылки и область видимости
Что выведет: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L6 · Ссылки и область видимости
Foreach по массиву (по значению) работает с «живым» массивом: изменения массива внутри цикла видны в этом же проходе.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L7 · Ссылки и область видимости
Статическое свойство класса у каждого экземпляра своё: изменения в одном объекте не видны в других.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L8 · Ссылки и область видимости
Массив может иметь булев ключ true, и он сохранится как bool.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L9 · Ссылки и область видимости
Что выведет этот код? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T10-L10 · Ссылки и область видимости
Что выведет этот код? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
Генераторы, итераторы, SPL
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
60
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
76.0%
100
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
86.0%
80
T11-L1 · Генераторы, итераторы, SPL
Внутри генератора можно использовать return со значением, и оно попадёт в $gen->getReturn().
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T11-L2 · Генераторы, итераторы, SPL
Полностью пройденный генератор можно «перемотать» через rewind() и пройти снова.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L3 · Генераторы, итераторы, SPL
Конструкция yield from делегирует проход другому генератору или итерируемому объекту.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L4 · Генераторы, итераторы, SPL
Что вернёт get_class(g()) для function g() { yield 1; }?
Верный ответ: generator
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L5 · Генераторы, итераторы, SPL
Сколько элементов вернёт count(iterator_to_array((function () { yield from [1, 2, 3]; })()));
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L6 · Генераторы, итераторы, SPL
Класс SplStack реализует очередь FIFO.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L7 · Генераторы, итераторы, SPL
ArrayIterator позволяет обернуть массив и обходить его через интерфейс Iterator.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T11-L8 · Генераторы, итераторы, SPL
Объект класса ArrayObject нельзя обойти через foreach.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T11-L9 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
0
T11-L10 · Генераторы, итераторы, SPL
Что выведет этот код? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
86.0%
Конфигурация и безопасность
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
20
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✗
86.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-16: ✓ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
94.0%
100
T12-L1 · Конфигурация и безопасность
password_hash() генерирует соль автоматически — передавать её отдельно не нужно.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L2 · Конфигурация и безопасность
Алгоритм PASSWORD_DEFAULT в PHP 8 — это md5 с автоматически добавленной солью.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L3 · Конфигурация и безопасность
Что вернёт password_verify('secret', password_hash('secret', PASSWORD_DEFAULT))?
Верный ответ: true
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L4 · Конфигурация и безопасность
Функция strip_tags() защищает от SQL-инъекций.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L5 · Конфигурация и безопасность
Функция session_regenerate_id() используется для защиты от фиксации сессии при входе пользователя.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L6 · Конфигурация и безопасность
Какая встроенная функция возвращает имя SAPI (например, cli)?
Верный ответ: php_sapi_name
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L7 · Конфигурация и безопасность
session_destroy() удаляет данные сессии на сервере, но не cookie в браузере пользователя.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L8 · Конфигурация и безопасность
Без вызова session_start() массив $_SESSION автоматически загружается данными сессии.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T12-L9 · Конфигурация и безопасность
Что выведет этот код? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T12-L10 · Конфигурация и безопасность
Что выведет этот код на PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
96.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
36.0%
0
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✗
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
36.0%
20
VC-L1 · PHP 8.4–8.5
В какой версии PHP появилась функция array_find()?
Верный ответ: 8.4
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set прямо в объявлении свойства) вошли в PHP 8.4.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
VC-L3 · PHP 8.4–8.5
Асимметричная видимость (public private(set) string $name) появилась в PHP 8.4.
Верный ответ: да
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
VC-L4 · PHP 8.4–8.5
В какой версии PHP впервые появился атрибут #[\NoDiscard]? Ответь номером версии.
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L5 · PHP 8.4–8.5
В какой версии PHP впервые появился оператор конвейера |> (pipe)? Ответь номером версии.
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L6 · PHP 8.4–8.5
В какой версии PHP появился clone-with — синтаксис clone($obj, ['x' => 1])? Ответь номером версии.
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L7 · PHP 8.4–8.5
В какой версии PHP появились функции array_first() и array_last()?
Верный ответ: 8.5
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
0
VC-L8 · PHP 8.4–8.5
Для какой версии PHP был принят RFC Partial Function Application v2 (по состоянию на 07.11.2026)? Ответь номером версии.
Верный ответ: 8.6
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
VC-L9 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
VC-L10 · PHP 8.4–8.5
Что выведет этот код на PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40.0%
PHP: 8.6+ и будущее
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✗ · run-05: ✓
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
67.5%
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
70.0%
0
VF-L1 · PHP: 8.6+ и будущее
Для какой версии PHP реализован RFC clamp_v2 (функция clamp()) по состоянию на 07.11.2026? Ответь номером версии.
Верный ответ: 8.6
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
VF-L2 · PHP: 8.6+ и будущее
RFC Context Managers v2 уже принят в PHP (на 07.11.2026).
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
VF-L3 · PHP: 8.6+ и будущее
RFC Bound-Erased Generic Types (generics) был отклонён в 2026 году.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
VF-L4 · PHP: 8.6+ и будущее
На 07.11.2026 RFC о включении многопоточности (ZTS) по умолчанию уже принят в PHP.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
VF-L5 · PHP: 8.6+ и будущее
В PHP 8.5 дженериков (параметризованных типов) по-прежнему нет.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
VF-L6 · PHP: 8.6+ и будущее
На 07.11.2026 последняя стабильная версия PHP — 8.5, а PHP 8.6 ещё не выпущена (GA — 19.11.2026).
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
VF-L7 · PHP: 8.6+ и будущее
Ветка PHP 6 так и не вышла: после PHP 5.6 вышел сразу PHP 7.0.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
VF-L8 · PHP: 8.6+ и будущее
RFC о добавлении атрибута #[\Deprecated] в ядро был принят.
Верный ответ: да
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
75.0%
Чистая архитектура
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
88.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
92.0%
100
T25-L1 · Чистая архитектура
Правило зависимостей в чистой и луковичной архитектурах: внутренние слои не знают о внешних — зависимости направлены к центру.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L2 · Чистая архитектура
Сущности домена не импортируют ни Doctrine, ни Symfony — только язык и, возможно, стандартную библиотеку.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L3 · Чистая архитектура
Контроллеры и Twig-шаблоны относятся к слою бизнес-логики, потому что именно они вызывают use cases.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T25-L4 · Чистая архитектура
Что находится в самом центре луковичной архитектуры?
Верный ответ: доменная модель
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T25-L5 · Чистая архитектура
Нарушение границ слоёв можно поймать автоматикой: анализатор зависимостей между слоями (например, deptrac) падает на запрещённом вызове.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L6 · Чистая архитектура
Use case (interactor) может принимать HTTP-запрос или EntityManager как аргументы — так проще.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L7 · Чистая архитектура
Как называется компонент, предоставляющий коллекцию агрегатов/сущностей, скрывая механизм хранения за интерфейсом?
Верный ответ: репозиторий
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L8 · Чистая архитектура
Замена PostgreSQL на другую БД в чистой архитектуре затрагивает только внешний слой — домен и use cases не меняются.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L9 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T25-L10 · Чистая архитектура
Слои: Domain, Application, Infrastructure. Правила deptrac: Application → Domain; Infrastructure → Domain, Application; Domain → только Domain. Сколько нарушений (Violations) покажет deptrac для этого класса? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
96.0%
DDD
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-01: ✓ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
84.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
92.0%
100
T26-L1 · DDD
Агрегат в DDD — это просто другое название таблицы базы данных.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L2 · DDD
Value Object неизменяем и сравнивается по значениям полей, а не по идентификатору.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L3 · DDD
Как называется единственная точка внешнего входа в агрегат, через которую проходят все изменения?
Верный ответ: aggregate root
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L4 · DDD
В DDD репозиторий объявляется на агрегат (его корень), а не на каждую сущность.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L5 · DDD
Ubiquitous language — единый язык модели, общий для разработчиков и предметных экспертов.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T26-L6 · DDD
Как называется граница, внутри которой модель и её язык едины, а снаружи те же понятия — другие модели?
Верный ответ: bounded context
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✗
100
T26-L7 · DDD
Анемичная модель (объекты только с геттерами/сеттерами, логика в сервисах) — рекомендуемый стиль DDD.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L8 · DDD
Bounded context означает, что у каждого контекста своя модель: одно и то же понятие в разных контекстах — разные классы.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L9 · DDD
Что выведет этот код? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T26-L10 · DDD
Что выведет этот код? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
92.0%
Symfony
80
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-01: ✗ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✗
90.0%
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
98.0%
100
T13-L1 · Symfony
Сервисы в DI-контейнере Symfony по умолчанию создаются лениво — при первом обращении к ним.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L2 · Symfony
Какая консольная команда Symfony выводит список всех зарегистрированных маршрутов?
Верный ответ: debug:router
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L3 · Symfony
Autowiring в Symfony требует вручную перечислять каждый сервис в конфигурации services.yaml.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L4 · Symfony
Twig-шаблоны компилируются в PHP-классы и кэшируются между запросами.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L5 · Symfony
Контейнер DI в dev-окружении Symfony пересобирается только после изменения отслеживаемых файлов, а не при каждом запросе.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T13-L6 · Symfony
Какая переменная окружения выбирает активное окружение Symfony (dev/prod)?
Верный ответ: app_env
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L7 · Symfony
Метод контроллера может быть private — маршрутизация Symfony работает с любыми методами класса.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L8 · Symfony
Подписчики событий (EventSubscriber) всегда получают события раньше слушателей (listeners), потому что интерфейс даёт им приоритет.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L9 · Symfony
Что выведет этот код? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T13-L10 · Symfony
Что выведет этот код? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
98.0%
Symfony: Security и формы
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
40
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✓
80
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
20
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
0
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
72.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✗
90.0%
100
T22-L1 · Symfony: Security и формы
В современном Symfony (6.0+) аутентификация строится на классах-authenticator (AuthenticatorInterface); прежняя система guard удалена.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L2 · Symfony: Security и формы
Какой атрибут Symfony проверяет роль/право прямо на методе контроллера (без него — 403)?
Верный ответ: isgranted
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L3 · Symfony: Security и формы
Voters (голосующие) — механизм Symfony для проверки доступа к конкретному объекту: isGranted('EDIT', $post).
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L4 · Symfony: Security и формы
Ограничения валидации в современных Symfony (7+) объявляются PHP-атрибутами (#[Assert\NotBlank]); аннотации-докблоки больше не поддерживаются.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L5 · Symfony: Security и формы
CSRF-защита форм в Symfony включена по умолчанию: форма проверяет токен при отправке.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T22-L6 · Symfony: Security и формы
Валидация формы в Symfony выполняется на сервере, даже если клиентская (HTML5) проверка прошла.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T22-L7 · Symfony: Security и формы
Какая команда Symfony maker генерирует класс формы (FormType)?
Верный ответ: make:form
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T22-L8 · Symfony: Security и формы
Symfony хранит пароль пользователя в сессии в открытом виде (plaintext).
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T22-L9 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T22-L10 · Symfony: Security и формы
Что выведет этот код? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
88.0%
Symfony: конфигурация и сервисы
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
90.0%
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
98.0%
100
T23-L1 · Symfony: конфигурация и сервисы
Конфигурация бандлов Symfony лежит в config/packages — по одному файлу на бандл или тему.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L2 · Symfony: конфигурация и сервисы
Файл .env с dev-дефолтами коммитится в репозиторий, а настоящие секреты живут в некоммитимом .env.local.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L3 · Symfony: конфигурация и сервисы
Какая команда Symfony выводит зарегистрированные сервисы контейнера и их алиасы?
Верный ответ: debug:container
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L4 · Symfony: конфигурация и сервисы
Контейнер Symfony позволяет менять параметры в рантайме: $container->setParameter() работает из контроллера.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L5 · Symfony: конфигурация и сервисы
По умолчанию сервисы в Symfony публичны (public: true) — их достают из контейнера напрямую.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L6 · Symfony: конфигурация и сервисы
Без конфигурационного файла в config/packages бандл не заработает — настройки обязательны для каждого бандла.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L7 · Symfony: конфигурация и сервисы
Значения переменных окружения подставляются в services.yaml синтаксисом %env(VAR)%.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L8 · Symfony: конфигурация и сервисы
Какая переменная окружения Symfony включает режим отладки (влияет на профайлер и отладку Twig)?
Верный ответ: app_debug
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L9 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T23-L10 · Symfony: конфигурация и сервисы
Что выведет этот код? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
Symfony: Messenger
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
0
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
60
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-01: ✓ · run-02: ⬜ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
84.0%
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
60
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
84.0%
100
T16-L1 · Symfony: Messenger
Одно сообщение в Symfony Messenger может обрабатывать только один обработчик (handler).
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T16-L2 · Symfony: Messenger
Транспорт sync в Messenger ставит сообщение в очередь и обрабатывает его воркером, как и async.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T16-L3 · Symfony: Messenger
Какой консольной командой запускается воркер, обрабатывающий сообщения из очередей Messenger?
Верный ответ: messenger:consume
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T16-L4 · Symfony: Messenger
Повторы неудачных сообщений (retry_strategy) настраиваются на уровне транспорта Messenger.
Верный ответ: да
run-31: ✓ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
60
T16-L5 · Symfony: Messenger
По умолчанию Messenger сериализует сообщения в JSON.
Верный ответ: нет
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✗
80
T16-L6 · Symfony: Messenger
Symfony Scheduler по расписанию порождает сообщения и отправляет их через Messenger.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T16-L7 · Symfony: Messenger
Какой встроенный транспорт Messenger хранит сообщения в таблицах БД через Doctrine?
Верный ответ: doctrine
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T16-L8 · Symfony: Messenger
Пайплайн Messenger можно расширять собственными middleware, встраивая их до или после встроенных.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T16-L9 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T16-L10 · Symfony: Messenger
Что выведет этот код? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✓
82.0%
Symfony: версии
0
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
60
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✗
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
78.0%
40
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-16: ✗ · run-17: ✓ · run-18: ✗ · run-19: ✗ · run-20: ✓
80
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✗
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
90.0%
40
T28-L1 · Symfony: версии
Мажорные релизы Symfony выходят раз в два года, минорные — каждые шесть месяцев (в мае и ноябре).
Верный ответ: да
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✗
80
T28-L2 · Symfony: версии
Какой минимальной версии PHP требует Symfony 8?
Верный ответ: 8.4
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T28-L3 · Symfony: версии
Symfony 7.0 сохранила поддержку аннотаций в докблоках (валидация, маршруты).
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T28-L4 · Symfony: версии
AssetMapper позволяет управлять CSS/JS без node и webpack — через importmap.php.
Верный ответ: да
run-31: ✗ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
80
T28-L5 · Symfony: версии
Symfony 6.4 — обычный релиз без длительной поддержки.
Верный ответ: нет
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T28-L6 · Symfony: версии
При переходе на новую мажорную версию Symfony деприкейшены прошлой ветки продолжают работать — мажорные релизы их не удаляют.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T28-L7 · Symfony: версии
Каждый мажорный релиз Symfony сопровождается UPGRADE-гайдом со списком изменений.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T28-L8 · Symfony: версии
Какой компонент Symfony управляет ассетами и importmap без node/webpack?
Верный ответ: asset-mapper
run-31: ✓ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T28-L9 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T28-L10 · Symfony: версии
Проект обновлён с Symfony 6.4 на 8.1. Что выведет этот код на 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
84.0%
Symfony: 8.2 и будущее
80
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
80
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✗
80
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
82.5%
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
87.5%
100
T29-L1 · Symfony: 8.2 и будущее
На 07.11.2026 Symfony 8.2 уже выпущена.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
60
T29-L2 · Symfony: 8.2 и будущее
По состоянию на 07.11.2026 Symfony 8.2 запланирована на ноябрь 2026 — в обычном шестимесячном цикле.
Верный ответ: да
run-31: ✗ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T29-L3 · Symfony: 8.2 и будущее
Какая версия Symfony выйдет следующей после 8.1 (по состоянию на 07.11.2026)?
Верный ответ: 8.2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T29-L4 · Symfony: 8.2 и будущее
Symfony 8.2 — мажорный релиз, требующий переписывания приложений под новые API.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T29-L5 · Symfony: 8.2 и будущее
Обновление внутри мажорной ветки (8.1 → 8.2) не должно требовать изменений кода — обратная совместимость сохраняется.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T29-L6 · Symfony: 8.2 и будущее
Какая минорная версия ветки 8.x выйдет последней перед Symfony 9.0?
Верный ответ: 8.4
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T29-L7 · Symfony: 8.2 и будущее
Symfony 8.2 потребует обновления PHP до 8.5 — придётся обновлять PHP вместе с ней.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T29-L8 · Symfony: 8.2 и будущее
Deprecations, добавленные в ветке 8.x, будут удалены не раньше Symfony 9.0.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
95.0%
Twig
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
80
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
74.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
20
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-16: ✗ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✗
0
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
72.0%
100
T21-L1 · Twig
Внутри {{ }} в Twig можно вызывать произвольный PHP-код напрямую.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L2 · Twig
Twig по умолчанию автоматически экранирует выводимые переменные.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L3 · Twig
Фильтр |e в Twig экранирует строку для безопасного вывода в HTML-контексте.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
0
T21-L4 · Twig
Какой фильтр из twig/intl-extra форматирует число с учётом локали?
Верный ответ: format_number
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T21-L5 · Twig
Фильтр |raw отключает автоэкранирование для значения.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L6 · Twig
В Twig {{ }} выводит значение выражения, а {% %} выполняет теги — условия, циклы, set.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L7 · Twig
В Twig нельзя объявить переменную в шаблоне — значения только передаются из контроллера.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T21-L8 · Twig
Какая функция Twig выводит отладочную структуру переменной (массива, объекта)?
Верный ответ: dump
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
20
T21-L9 · Twig
Что выведет этот шаблон Twig? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✓ · run-35: ✗
20
T21-L10 · Twig
Какой класс исключения выбросит render() этого шаблона? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-31: ✗ · run-32: ✗ · run-33: ✗ · run-34: ✗ · run-35: ✓
74.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
0
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✗ · run-05: ✓
80
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
20
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
76.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
60
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-16: ✓ · run-17: ✗ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
90.0%
100
T24-L1 · Bootstrap
Bootstrap — это CSS/JS-библиотека готовых компонентов интерфейса, а не SPA-фреймворк.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L2 · Bootstrap
Какой класс Bootstrap задаёт адаптивный контейнер с фиксированной максимальной шириной по брейкпоинтам?
Верный ответ: container
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L3 · Bootstrap
Сетка Bootstrap построена на CSS float и делит строку на 16 колонок.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L4 · Bootstrap
Именованные брейкпоинты Bootstrap (с инфиксом в классах) — sm, md, lg, xl, xxl; их пять.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T24-L5 · Bootstrap
Утилиты вроде .mt-3 или .px-2 используют шаг spacing-шкалы: число — множитель $spacer.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✗ · run-35: ✗
100
T24-L6 · Bootstrap
Какой data-атрибут Bootstrap 5 включает интерактивный компонент (например, dropdown) на элементе?
Верный ответ: data-bs-toggle
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L7 · Bootstrap
Компоненты Bootstrap 5 работают без jQuery — на чистом vanilla JS.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L8 · Bootstrap
Тёмную тему в Bootstrap включают классом .dark на корневом элементе.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L9 · Bootstrap
Какая max-width у .container в Bootstrap 5.3 при ширине окна 992px?
Верный ответ: 960
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T24-L10 · Bootstrap
Какая утилита определит цвет текста в Bootstrap 5.3: `<p class="text-danger text-primary">…</p>`? Ответь именем класса-победителя.
Верный ответ: text-danger
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
94.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✗
80
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✗ · run-04: ✓ · run-05: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
60
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
92.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
40
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✓ · run-20: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
94.0%
100
T14-L1 · Doctrine
Doctrine ORM сам создаёт таблицы в базе при первом обращении к сущности в рантайме.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L2 · Doctrine
Какой метод EntityManager помечает новый объект как управляемый, не выполняя SQL до flush()?
Верный ответ: persist
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L3 · Doctrine
В Doctrine ORM 3 метод EntityManager::merge() доступен и делает переданный объект управляемым.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L4 · Doctrine
DQL-запросы пишутся в терминах сущностей и их полей, а не таблиц и столбцов.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L5 · Doctrine
Что вернёт $repository->find(999), если записи с идентификатором 999 нет?
Верный ответ: null
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T14-L6 · Doctrine
DoctrineBundle в Symfony автоматически вызывает flush() в конце каждого запроса.
Верный ответ: нет
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T14-L7 · Doctrine
Для управляемой сущности достаточно изменить свойство: flush() зафиксирует изменение без вызова persist() — Unit of Work отслеживает изменения.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L8 · Doctrine
remove() выполняет SQL DELETE сразу, не дожидаясь flush().
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L9 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T14-L10 · Doctrine
Дано: Doctrine ORM 3, EntityManager на SQLite in-memory, entity User с автоинкрементным первичным ключом. Таблица users пуста. Что выведет этот код? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
94.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-01: ✗ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
98.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL использует MVCC, поэтому читатели блокируют писателей, а писатели — читателей.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L2 · PostgreSQL
Какая команда SQL показывает план выполнения запроса, не выполняя сам запрос?
Верный ответ: explain
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L3 · PostgreSQL
SERIAL и GENERATED ... AS IDENTITY — это два названия одного и того же механизма.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L4 · PostgreSQL
UNIQUE-ограничение PostgreSQL по умолчанию допускает только одну строку с NULL в столбце.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L5 · PostgreSQL
Какая агрегатная функция PostgreSQL склеивает строки с разделителем?
Верный ответ: string_agg
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L6 · PostgreSQL
Обычный VACUUM возвращает место, занятое «мёртвыми» кортежами, операционной системе.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L7 · PostgreSQL
Какое ключевое слово в определении window-функции разбивает строки на группы, для которых считается функция?
Верный ответ: partition by
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L8 · PostgreSQL
Уровень изоляции READ COMMITTED защищает от неповторяющегося чтения (non-repeatable read).
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L9 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T15-L10 · PostgreSQL
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
PostgreSQL: транзакции и индексы
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100.0%
100
T17-L1 · PostgreSQL: транзакции и индексы
По умолчанию PostgreSQL выполняет каждый отдельный SQL-оператор в собственной неявной транзакции (autocommit).
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L2 · PostgreSQL: транзакции и индексы
Какая SQL-команда завершает транзакцию, сохраняя все её изменения?
Верный ответ: commit
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L3 · PostgreSQL: транзакции и индексы
Индексы ускоряют не только SELECT: UPDATE и DELETE с поиском по индексированному столбцу тоже выигрывают.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L4 · PostgreSQL: транзакции и индексы
Для отката части операторов внутри транзакции PostgreSQL использует SAVEPOINT.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L5 · PostgreSQL: транзакции и индексы
EXPLAIN ANALYZE показывает план запроса, не выполняя сам запрос.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L6 · PostgreSQL: транзакции и индексы
Какое расширение PostgreSQL добавляет векторные типы и индексы для поиска по эмбеддингам?
Верный ответ: vector
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L7 · PostgreSQL: транзакции и индексы
Частичный индекс (CREATE INDEX ... WHERE ...) строится только по строкам, удовлетворяющим условию.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L8 · PostgreSQL: транзакции и индексы
Уровень SERIALIZABLE в PostgreSQL реализован блокировкой строк, которые читает транзакция.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L9 · PostgreSQL: транзакции и индексы
Что вернёт этот SQL-запрос (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T17-L10 · PostgreSQL: транзакции и индексы
Что выведет эта последовательность команд psql? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
HTTP и REST API
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-16: ✗ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
98.0%
100
T19-L1 · HTTP и REST API
HTTP-статус 201 означает, что в результате запроса создан новый ресурс.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L2 · HTTP и REST API
Какой HTTP-статус означает успешный запрос с пустым телом ответа (например, после DELETE)?
Верный ответ: 204
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L3 · HTTP и REST API
Метод DELETE идемпотентен по спецификации HTTP: повторный запрос по тому же ресурсу не меняет результат.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L4 · HTTP и REST API
Заголовок Access-Control-Allow-Origin отправляет клиент, чтобы сервер разрешил принимать запросы с другого origin.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L5 · HTTP и REST API
Код 429 Too Many Requests используется, когда клиент превысил лимит запросов (rate limiting).
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L6 · HTTP и REST API
Коды 5xx означают ошибку клиента, а 4xx — ошибку на стороне сервера.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L7 · HTTP и REST API
Какой HTTP-заголовок указывает MIME-тип тела запроса или ответа?
Верный ответ: content-type
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L8 · HTTP и REST API
PATCH не обязан быть идемпотентным по RFC 5789, в отличие от PUT.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L9 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T19-L10 · HTTP и REST API
Какой HTTP-метод отправит эта команда? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100.0%
Безопасность и OAuth
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
80
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-01: ✓ · run-02: ✗ · run-03: ✓ · run-04: ✗ · run-05: ✗
92.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
80
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✗ · run-20: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
98.0%
100
T20-L1 · Безопасность и OAuth
Проверить пароль достаточно сравнением его хеша с хешем из базы обычным оператором ==.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L2 · Безопасность и OAuth
CSRF-токен выдаётся сервером (привязан к сессии) и проверяется на сервере при unsafe-запросах (POST и т.п.).
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L3 · Безопасность и OAuth
Какой HTTP-заголовок включает политику CSP (Content Security Policy)?
Верный ответ: content-security-policy
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L4 · Безопасность и OAuth
OAuth 2.0 — протокол аутентификации: access-токен сообщает, кто именно пользователь.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L5 · Безопасность и OAuth
XSS предотвращается валидацией ввода на сервере перед записью в базу.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T20-L6 · Безопасность и OAuth
В authorization code flow OAuth 2.0 какой параметр приходит в redirect_uri и обменивается на access-токен?
Верный ответ: code
run-31: ✓ · run-32: ✓ · run-33: ✗ · run-34: ✓ · run-35: ✓
100
T20-L7 · Безопасность и OAuth
Refresh-токен живёт дольше access-токена и позволяет получить новый access-токен без повторного входа пользователя.
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T20-L8 · Безопасность и OAuth
Соль пароля нужно держать в секрете: без неё хеш нельзя проверить.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
80
T20-L9 · Безопасность и OAuth
Клиент обращается к токен-эндпоинту (RFC 6749) с несуществующим client_id. Какое значение поля error вернёт эндпоинт?
Верный ответ: invalid_client
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✗ · run-35: ✓
100
T20-L10 · Безопасность и OAuth
OAuth 2.0: клиент начал поток с response_type=token. В какой части redirect_uri авторизационный сервер передаёт access_token?
Верный ответ: fragment
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
96.0%
Тестирование: PHPUnit
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
40
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-01: ✗ · run-02: ✗ · run-03: ⬜ · run-04: ✓ · run-05: ✓
20
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✗ · run-05: ✓
20
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-01: ✗ · run-02: ✗ · run-03: ✗ · run-04: ✓ · run-05: ✗
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-01: ✓ · run-02: ✓ · run-03: ✓ · run-04: ✓ · run-05: ✓
78.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
0
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-16: ✗ · run-17: ✗ · run-18: ✗ · run-19: ✗ · run-20: ✗
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-16: ✓ · run-17: ✓ · run-18: ✓ · run-19: ✓ · run-20: ✓
90.0%
100
T18-L1 · Тестирование: PHPUnit
PHPUnit выполняет тестовые методы любого класса — наследовать TestCase не обязательно.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L2 · Тестирование: PHPUnit
Метод setUp() в PHPUnit вызывается один раз перед всеми тестами класса.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L3 · Тестирование: PHPUnit
Поставщик данных (data provider) позволяет прогнать тест ровно с одним набором аргументов.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L4 · Тестирование: PHPUnit
Какой метод PHPUnit объявляет ожидание исключения определённого класса?
Верный ответ: expectexception
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L5 · Тестирование: PHPUnit
В PHPUnit стаб (stub) проверяет, какие методы на нём вызывали, а мок (mock) только подставляет данные.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L6 · Тестирование: PHPUnit
В PHPUnit 10+ рекомендуемый способ передачи данных в тест — атрибут #[DataProvider] (аннотация @dataProvider устарела).
Верный ответ: да
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L7 · Тестирование: PHPUnit
В PHPUnit нельзя объявить зависимость одного теста от результата другого.
Верный ответ: нет
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
40
T18-L8 · Тестирование: PHPUnit
Какая опция командной строки PHPUnit включает случайный порядок выполнения тестов?
Верный ответ: --order-by=random
run-31: ✗ · run-32: ✗ · run-33: ✓ · run-34: ✓ · run-35: ✗
100
T18-L9 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Команда: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
100
T18-L10 · Тестирование: PHPUnit
Сколько тестов выполнит эта команда и сколько из них завершится failure? Ответь двумя числами через запятую (выполнено, упало). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Команда: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-31: ✓ · run-32: ✓ · run-33: ✓ · run-34: ✓ · run-35: ✓
94.0%

qwen3.8:latest · язык: en

think: offитог 85.3% · стаб. 69.3% · время 12.3 мин
think: lowитог 91.7% · стаб. 81.8% · время 36.6 мин
think: mediumитог 90.8% · стаб. 83.8% · время 42.0 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
Syntax and operators
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
60
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗
74.0%
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✗
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✗
80
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
88.0%
100
T01-L1 · Syntax and operators
Double-quoted and single-quoted strings are processed identically; the difference is only in speed.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T01-L2 · Syntax and operators
The ?? operator follows isset semantics and raises no warnings for undefined variables.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T01-L3 · Syntax and operators
What will this print: echo 'a', 'b';
Верный ответ: ab
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T01-L4 · Syntax and operators
print returns the value 1 and can be used inside an expression.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T01-L5 · Syntax and operators
The ?: (elvis) operator returns its left operand when it is falsy.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T01-L6 · Syntax and operators
In PHP 8, the concatenation operator (.) has lower precedence than addition and subtraction.
Верный ответ: yes
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T01-L7 · Syntax and operators
The expression 2 ** 3 ** 2 in PHP evaluates as (2 ** 3) ** 2, that is, 64.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
20
T01-L8 · Syntax and operators
What string will this print: echo 'sum: ' . 2 + 3; (PHP 8)?
Верный ответ: сумма: 5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✓
80
T01-L9 · Syntax and operators
What does this code output? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
100
T01-L10 · Syntax and operators
What does this code output? ```php echo -3 ** 2; ```
Верный ответ: -9
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
86.0%
Types and comparisons
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
88.0%
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
60
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
88.0%
100
T02-L1 · Types and comparisons
With strict comparison (===), arrays are considered equal regardless of element order.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L2 · Types and comparisons
The comparison 0 == false returns false because it is a strict comparison.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L3 · Types and comparisons
In PHP 8, the expression "abc" == 0 returns true.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T02-L4 · Types and comparisons
Under loose comparison, null equals 0, the empty string, and false at the same time.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
100
T02-L5 · Types and comparisons
What does the expression (int) '42abc' return?
Верный ответ: 42
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L6 · Types and comparisons
What does the expression '5' + 5 return?
Верный ответ: 10
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L7 · Types and comparisons
When cast to string, false becomes "0".
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L8 · Types and comparisons
The comparison 0.1 + 0.2 === 0.3 returns false.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T02-L9 · Types and comparisons
What does this code output? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T02-L10 · Types and comparisons
What does this code output? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✓
94.0%
Strings
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
88.0%
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
90.0%
100
T03-L1 · Strings
strrev() correctly reverses a UTF-8 string.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L2 · Strings
str_contains('Hello world', 'world') returns true.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L3 · Strings
str_pad() can pad a string on the right side only.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L4 · Strings
By default trim() strips only spaces, leaving tabs and newlines intact.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L5 · Strings
How many BYTES does strlen('héllo') return for a UTF-8 string?
Верный ответ: 12
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L6 · Strings
What does substr('abcdef', -3) return?
Верный ответ: def
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L7 · Strings
ucfirst() modifies the string passed to it in place.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T03-L8 · Strings
Variable interpolation works in heredoc but not in nowdoc.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T03-L9 · Strings
What does this code output? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
0
T03-L10 · Strings
What does this code output? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
88.0%
Arrays
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
84.0%
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
98.0%
100
T04-L1 · Arrays
The sort() function preserves the key-to-value association of the array.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L2 · Arrays
The string key '5' in an array is stored as the integer 5.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L3 · Arrays
The in_array() function uses strict comparison (===) by default.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L4 · Arrays
Without a callback, array_filter() removes all "empty" (falsy) elements from the array.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L5 · Arrays
By default, array_slice() preserves the original numeric keys of the array.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L6 · Arrays
What does array_slice([10, 20, 30, 40], 1, 2) return?
Верный ответ: [20,30]
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L7 · Arrays
How many elements will count(['a' => 1] + ['a' => 9, 'b' => 2]) return?
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T04-L8 · Arrays
Since PHP 8.1, the spread operator [...$a, ...$b] supports arrays with string keys.
Верный ответ: yes
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L9 · Arrays
What does this code output? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T04-L10 · Arrays
What does this code output? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
98.0%
Functions and closures
20
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-06: ⬜ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
88.0%
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T05-L1 · Functions and closures
Named arguments cannot be combined with argument unpacking ...$args in a single call.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L2 · Functions and closures
An anonymous function without use sees variables from the outer scope.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L3 · Functions and closures
What will func_num_args() return inside function f($a) { return func_num_args(); } when called as f(1, 2, 3)?
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L4 · Functions and closures
The body of an arrow function fn may consist of several expressions in curly braces.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L5 · Functions and closures
An arrow function fn captures outer variables by reference (lazily, at use time).
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L6 · Functions and closures
A closure declared as static function () {} does not capture $this.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L7 · Functions and closures
What will this print: $x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L8 · Functions and closures
In weak typing mode (without strict_types), passing the string "5" to an int parameter is allowed.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T05-L9 · Functions and closures
What does this code output? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T05-L10 · Functions and closures
What does this code output? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
98.0%
OOP: classes and inheritance
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
60
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
94.0%
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
94.0%
100
T06-L1 · OOP: classes and inheritance
PHP supports constructor property promotion: public function __construct(private int $x) {}.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L2 · OOP: classes and inheritance
Which keyword prevents a method from being overridden in subclasses?
Верный ответ: final
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L3 · OOP: classes and inheritance
A method declared final cannot be overridden in a subclass.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L4 · OOP: classes and inheritance
Parent properties with private visibility are accessible in a subclass.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L5 · OOP: classes and inheritance
What does get_class(new class {}) return? Answer with the part of the name before the NUL byte (without the file path).
Верный ответ: class@anonymous
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L6 · OOP: classes and inheritance
A private parent method is not part of the inheritance contract: a child may declare a method with the same name and any visibility.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L7 · OOP: classes and inheritance
The magic method __get() is called only for non-existent properties.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L8 · OOP: classes and inheritance
What does reassigning a readonly property throw — Exception or Error?
Верный ответ: error
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T06-L9 · OOP: classes and inheritance
What does this code output? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T06-L10 · OOP: classes and inheritance
What does this code output on PHP 8.5? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
98.0%
Interfaces, traits, enum
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
88.0%
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
94.0%
100
T07-L1 · Interfaces, traits, enum
An interface can declare constants.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L2 · Interfaces, traits, enum
Which operator checks whether an object is an instance of a class or interface?
Верный ответ: instanceof
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
20
T07-L3 · Interfaces, traits, enum
An interface can declare static methods.
Верный ответ: yes
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✓
100
T07-L4 · Interfaces, traits, enum
The instanceof operator only checks class inheritance: it ignores interfaces.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L5 · Interfaces, traits, enum
An interface method may have a default implementation, like a trait method.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L6 · Interfaces, traits, enum
An abstract method in an abstract class may have protected visibility.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L7 · Interfaces, traits, enum
How many elements will Foo::cases() return for enum Foo { case A; case B; case C; }?
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L8 · Interfaces, traits, enum
A trait can declare constants.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L9 · Interfaces, traits, enum
What does this code output? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T07-L10 · Interfaces, traits, enum
What does this code output? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
92.0%
Exceptions and errors
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
92.0%
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T08-L1 · Exceptions and errors
The Throwable interface is a common ancestor of both Exception and Error.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L2 · Exceptions and errors
A catch (Exception $e) block will also catch TypeError, because TypeError ultimately inherits from Exception.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L3 · Exceptions and errors
The @ operator suppresses exceptions too.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L4 · Exceptions and errors
What error class does intdiv(5, 0) throw?
Верный ответ: divisionbyzeroerror
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L5 · Exceptions and errors
The finally block runs only if the exception was caught by a catch block.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L6 · Exceptions and errors
An exception thrown inside a finally block has no effect on the result of the try block.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L7 · Exceptions and errors
What does the expression (bool) new Exception('x') return?
Верный ответ: true
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L8 · Exceptions and errors
Functions registered via register_shutdown_function() run when exit is called.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L9 · Exceptions and errors
What does this code output? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T08-L10 · Exceptions and errors
What does this code output? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100.0%
Namespaces and autoloading
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
80
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
80
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
86.0%
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
94.0%
100
T09-L1 · Namespaces and autoloading
The use App\Service\Mailer; statement itself loads the class file.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L2 · Namespaces and autoloading
What follows use to import a function (not a class): the word function or const?
Верный ответ: function
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L3 · Namespaces and autoloading
Into which file (path from src/) does the PSR-4 mapping "App\ → src/" place the class App\Controller\Api\UserController?
Верный ответ: src/controller/api/usercontroller.php
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L4 · Namespaces and autoloading
Including vendor/autoload.php registers autoloaders via spl_autoload_register().
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L5 · Namespaces and autoloading
The magic constant __NAMESPACE__ contains the name of the current namespace.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L6 · Namespaces and autoloading
An unqualified class name (without a leading \) in new is resolved from the global root.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L7 · Namespaces and autoloading
With the PSR-4 mapping "App\ → src/", the class App\Model\User lives in the file src/Model/User.php.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T09-L8 · Namespaces and autoloading
A use statement may be written inside a function body — the import then applies to that function only.
Верный ответ: no
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L9 · Namespaces and autoloading
What does this code output? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T09-L10 · Namespaces and autoloading
What does this code output? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
96.0%
References and scope
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
60
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗
88.0%
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T10-L1 · References and scope
Arrays are copied on assignment rather than passed by reference.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L2 · References and scope
What will this print: $a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L3 · References and scope
Inside a function, user-defined global variables are inaccessible without global, $GLOBALS, or passing them as parameters.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L4 · References and scope
unset($GLOBALS['x']) inside a function removes the global variable only for that function.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L5 · References and scope
What will this print: function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L6 · References and scope
A foreach over an array (by value) works with the "live" array: changes to the array inside the loop are visible in the same pass.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L7 · References and scope
A static property belongs to each instance separately: changes in one object are not visible in others.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L8 · References and scope
An array can have a boolean key true, and it will be stored as bool.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L9 · References and scope
What does this code output? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T10-L10 · References and scope
What does this code output? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100.0%
Generators, iterators, SPL
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
86.0%
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
84.0%
100
T11-L1 · Generators, iterators, SPL
Inside a generator, return with a value can be used, and it becomes available via $gen->getReturn().
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L2 · Generators, iterators, SPL
A fully consumed generator can be rewound with rewind() and traversed again.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T11-L3 · Generators, iterators, SPL
The yield from construct delegates traversal to another generator or iterable.
Верный ответ: yes
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
100
T11-L4 · Generators, iterators, SPL
What does get_class(g()) return for function g() { yield 1; }?
Верный ответ: generator
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L5 · Generators, iterators, SPL
How many elements will count(iterator_to_array((function () { yield from [1, 2, 3]; })())) return?
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L6 · Generators, iterators, SPL
The SplStack class implements a FIFO queue.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L7 · Generators, iterators, SPL
ArrayIterator allows wrapping an array and traversing it via the Iterator interface.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T11-L8 · Generators, iterators, SPL
An ArrayObject instance cannot be traversed with foreach.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T11-L9 · Generators, iterators, SPL
What does this code output? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T11-L10 · Generators, iterators, SPL
What does this code output? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
84.0%
Configuration and security
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
40
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
88.0%
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
98.0%
100
T12-L1 · Configuration and security
password_hash() generates a salt automatically — passing one separately is not needed.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L2 · Configuration and security
In PHP 8, PASSWORD_DEFAULT is md5 with an automatically added salt.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L3 · Configuration and security
What does password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) return?
Верный ответ: true
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L4 · Configuration and security
strip_tags() protects against SQL injection.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L5 · Configuration and security
session_regenerate_id() is used to protect against session fixation upon user login.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L6 · Configuration and security
Which built-in function returns the SAPI name (e.g., cli)?
Верный ответ: php_sapi_name
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L7 · Configuration and security
session_destroy() deletes session data on the server but not the cookie in the user's browser.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L8 · Configuration and security
Without calling session_start(), the $_SESSION array is automatically populated with session data.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T12-L9 · Configuration and security
What does this code output? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T12-L10 · Configuration and security
What does this code output on PHP 8.5? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✓
96.0%
PHP 8.4–8.5
20
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
38.0%
20
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✗
100
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
42.0%
20
VC-L1 · PHP 8.4–8.5
In which PHP version was the array_find() function introduced?
Верный ответ: 8.4
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✓
80
VC-L2 · PHP 8.4–8.5
Property hooks (get/set right in the property declaration) landed in PHP 8.4.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
60
VC-L3 · PHP 8.4–8.5
Asymmetric visibility (public private(set) string $name) appeared in PHP 8.4.
Верный ответ: yes
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
0
VC-L4 · PHP 8.4–8.5
In which PHP version was the #[\NoDiscard] attribute introduced? Answer with the version number.
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
VC-L5 · PHP 8.4–8.5
In which PHP version did the pipe operator |> first appear? Answer with the version number.
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
VC-L6 · PHP 8.4–8.5
In which PHP version did clone-with — the syntax clone($obj, ['x' => 1]) — appear? Answer with the version number.
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
VC-L7 · PHP 8.4–8.5
In which PHP version were the array_first() and array_last() functions introduced?
Верный ответ: 8.5
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
VC-L8 · PHP 8.4–8.5
For which PHP version was RFC Partial Function Application v2 adopted (as of 2026-11-07)? Answer with the version number.
Верный ответ: 8.6
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
VC-L9 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
VC-L10 · PHP 8.4–8.5
What does this code output on PHP 8.5? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
36.0%
PHP: 8.6+ and the future
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
60
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
65.0%
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-21: ✗ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
70.0%
0
VF-L1 · PHP: 8.6+ and the future
For which PHP version was the RFC clamp_v2 (the clamp() function) implemented, as of 2026-11-07? Answer with the version number.
Верный ответ: 8.6
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
VF-L2 · PHP: 8.6+ and the future
RFC Context Managers v2 has already been adopted in PHP (as of 2026-11-07).
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
VF-L3 · PHP: 8.6+ and the future
RFC Bound-Erased Generic Types (generics) was declined in 2026.
Верный ответ: yes
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
VF-L4 · PHP: 8.6+ and the future
As of 2026-11-07, the RFC enabling multithreading (ZTS) by default has already been accepted in PHP.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
VF-L5 · PHP: 8.6+ and the future
As of PHP 8.5, generics (parameterized types) are still absent.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
VF-L6 · PHP: 8.6+ and the future
As of 2026-11-07, the latest stable PHP version is 8.5, and PHP 8.6 has not been released yet (GA — 2026-11-19).
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
VF-L7 · PHP: 8.6+ and the future
The PHP 6 branch never shipped: after PHP 5.6 came PHP 7.0 directly.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
VF-L8 · PHP: 8.6+ and the future
The RFC adding the #[\Deprecated] attribute to the core was adopted.
Верный ответ: yes
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
62.5%
Clean architecture
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
84.0%
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
90.0%
100
T25-L1 · Clean architecture
The dependency rule of clean and onion architecture: inner layers know nothing about outer ones — dependencies point toward the center.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L2 · Clean architecture
Domain entities import neither Doctrine nor Symfony — only the language and, possibly, the standard library.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L3 · Clean architecture
Controllers and Twig templates belong to the business-logic layer because they are the ones calling use cases.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T25-L4 · Clean architecture
What sits at the very center of the onion architecture?
Верный ответ: domain model
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T25-L5 · Clean architecture
Layer boundary violations can be caught automatically: a layer-dependency analyzer (e.g. deptrac) fails on a forbidden call.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L6 · Clean architecture
A use case (interactor) may accept an HTTP request or an EntityManager as arguments — it is simpler that way.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L7 · Clean architecture
What is the component called that provides a collection of aggregates/entities while hiding the storage mechanism behind an interface?
Верный ответ: repository
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L8 · Clean architecture
In clean architecture, swapping PostgreSQL for another database touches only the outer layer — the domain and use cases stay unchanged.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L9 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T25-L10 · Clean architecture
Layers: Domain, Application, Infrastructure. Deptrac rules: Application → Domain; Infrastructure → Domain, Application; Domain → Domain only. How many violations will deptrac report for this class? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
90.0%
DDD
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
86.0%
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
92.0%
100
T26-L1 · DDD
In DDD, an aggregate is just another name for a database table.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L2 · DDD
A Value Object is immutable and compared by the values of its fields, not by identity.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L3 · DDD
What is the single external entry point of an aggregate, through which all changes must go, called?
Верный ответ: aggregate root
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L4 · DDD
In DDD, a repository is declared for an aggregate (its root), not for every entity.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L5 · DDD
Ubiquitous language is the model's shared language common to developers and domain experts.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T26-L6 · DDD
What is the boundary called within which a model and its language are consistent, while outside the same words mean other models?
Верный ответ: bounded context
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T26-L7 · DDD
An anemic model (objects with only getters/setters, logic in services) is the recommended DDD style.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L8 · DDD
Bounded context means each context has its own model: the same concept in different contexts is a different class.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L9 · DDD
What does this code output? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T26-L10 · DDD
What does this code output? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
90.0%
Symfony
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
86.0%
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
98.0%
100
T13-L1 · Symfony
Services in the Symfony DI container are created lazily by default — on first use.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L2 · Symfony
Which Symfony console command lists all registered routes?
Верный ответ: debug:router
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L3 · Symfony
Symfony autowiring requires manually declaring every service in services.yaml.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L4 · Symfony
Twig templates are compiled into PHP classes and cached between requests.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L5 · Symfony
In the Symfony dev environment the DI container is rebuilt only after tracked files change, not on every request.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T13-L6 · Symfony
Which environment variable selects the active Symfony environment (dev/prod)?
Верный ответ: app_env
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L7 · Symfony
A controller method can be private — Symfony routing works with any method of the class.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L8 · Symfony
Event subscribers always receive events before listeners, because the interface gives them priority.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L9 · Symfony
What does this code output? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T13-L10 · Symfony
What does this code output? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
98.0%
Symfony: Security and forms
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
40
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗
78.0%
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-21: ✓ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
92.0%
100
T22-L1 · Symfony: Security and forms
In modern Symfony (6.0+) authentication is built on authenticator classes (AuthenticatorInterface); the old guard system has been removed.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T22-L2 · Symfony: Security and forms
Which Symfony attribute checks a role/permission right on a controller method (403 without it)?
Верный ответ: isgranted
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T22-L3 · Symfony: Security and forms
Voters are Symfony's mechanism for checking access to a specific object: isGranted('EDIT', $post).
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T22-L4 · Symfony: Security and forms
In modern Symfony (7+) validation constraints are declared as PHP attributes (#[Assert\NotBlank]); doctrine annotations are no longer supported.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T22-L5 · Symfony: Security and forms
CSRF protection of Symfony forms is enabled by default: the form validates the token on submission.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T22-L6 · Symfony: Security and forms
Form validation in Symfony runs server-side even if the client-side (HTML5) checks passed.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T22-L7 · Symfony: Security and forms
Which Symfony maker command generates a form class (FormType)?
Верный ответ: make:form
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✗
100
T22-L8 · Symfony: Security and forms
Symfony stores the user's password in the session in plain text.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T22-L9 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-36: ✗ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
60
T22-L10 · Symfony: Security and forms
What does this code output? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
88.0%
Symfony: configuration and services
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
90.0%
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T23-L1 · Symfony: configuration and services
Symfony bundle configuration lives in config/packages — one file per bundle or topic.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L2 · Symfony: configuration and services
The .env file with dev defaults is committed to the repository, while real secrets live in the non-committed .env.local.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L3 · Symfony: configuration and services
Which Symfony command lists the container's registered services and their aliases?
Верный ответ: debug:container
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L4 · Symfony: configuration and services
The Symfony container allows changing parameters at runtime: $container->setParameter() works from a controller.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L5 · Symfony: configuration and services
By default, Symfony services are public (public: true) — you can fetch them directly from the container.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L6 · Symfony: configuration and services
Without a config file in config/packages a bundle will not work — configuration is mandatory for every bundle.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L7 · Symfony: configuration and services
Environment variable values are injected into services.yaml using the %env(VAR)% syntax.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L8 · Symfony: configuration and services
Which Symfony environment variable enables debug mode (affects the profiler and Twig debugging)?
Верный ответ: app_debug
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L9 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T23-L10 · Symfony: configuration and services
What does this code output? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100.0%
Symfony: Messenger
60
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
60
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
86.0%
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
0
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
80
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✗
82.0%
100
T16-L1 · Symfony: Messenger
A single message in Symfony Messenger can only have one handler.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T16-L2 · Symfony: Messenger
The sync transport in Messenger queues the message for a worker, just like async.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T16-L3 · Symfony: Messenger
Which console command starts the worker that processes Messenger queue messages?
Верный ответ: messenger:consume
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T16-L4 · Symfony: Messenger
Retries for failed messages (retry_strategy) are configured per Messenger transport.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
20
T16-L5 · Symfony: Messenger
By default, Messenger serializes messages to JSON.
Верный ответ: no
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
80
T16-L6 · Symfony: Messenger
Symfony Scheduler produces messages on a schedule and dispatches them through Messenger.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
100
T16-L7 · Symfony: Messenger
Which built-in Messenger transport stores messages in database tables via Doctrine?
Верный ответ: doctrine
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T16-L8 · Symfony: Messenger
The Messenger pipeline can be extended with custom middleware, placed before or after the built-in ones.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T16-L9 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T16-L10 · Symfony: Messenger
What does this code output? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✗
86.0%
Symfony: versions
80
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
60
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
80
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
74.0%
80
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✗
80
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
92.0%
40
T28-L1 · Symfony: versions
Symfony major releases come every two years, minor ones every six months (in May and November).
Верный ответ: yes
run-36: ✗ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✗
100
T28-L2 · Symfony: versions
What is the minimum PHP version required by Symfony 8?
Верный ответ: 8.4
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L3 · Symfony: versions
Symfony 7.0 kept support for docblock annotations (validation, routes).
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L4 · Symfony: versions
AssetMapper manages CSS/JS without node or webpack — via importmap.php.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L5 · Symfony: versions
Symfony 6.4 is a regular release without long-term support.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L6 · Symfony: versions
When moving to a new Symfony major version, deprecations of the previous branch keep working — major releases do not remove them.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L7 · Symfony: versions
Every Symfony major release is accompanied by an UPGRADE guide listing the changes.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L8 · Symfony: versions
Which Symfony component manages assets and the importmap without node/webpack?
Верный ответ: asset-mapper
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L9 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T28-L10 · Symfony: versions
The project was upgraded from Symfony 6.4 to 8.1. What does this code output on 8.1? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
94.0%
Symfony: 8.2 and beyond
100
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
60
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-06: ✗ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
80
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
60
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
80
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✗
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
72.5%
80
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✓ · run-25: ✓
40
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✓ · run-25: ✓
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✗ · run-25: ✓
100
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
87.5%
80
T29-L1 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 has already been released.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✓ · run-40: ✓
20
T29-L2 · Symfony: 8.2 and beyond
As of 2026-11-07, Symfony 8.2 is scheduled for November 2026, following the usual six-month cycle.
Верный ответ: yes
run-36: ✗ · run-37: ✗ · run-38: ✓ · run-39: ✗ · run-40: ✗
100
T29-L3 · Symfony: 8.2 and beyond
Which Symfony version comes after 8.1 (as of 2026-11-07)?
Верный ответ: 8.2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T29-L4 · Symfony: 8.2 and beyond
Symfony 8.2 is a major release requiring applications to be rewritten for new APIs.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T29-L5 · Symfony: 8.2 and beyond
Updating within a major branch (8.1 → 8.2) should not require code changes — backward compatibility is preserved.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T29-L6 · Symfony: 8.2 and beyond
Which minor version of the 8.x branch is released last, before Symfony 9.0?
Верный ответ: 8.4
run-36: ✓ · run-37: ✗ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T29-L7 · Symfony: 8.2 and beyond
Symfony 8.2 will require PHP 8.5 — you would have to upgrade PHP along with it.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T29-L8 · Symfony: 8.2 and beyond
Deprecations added in the 8.x branch will not be removed before Symfony 9.0.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
85.0%
Twig
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-06: ✗ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
20
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
78.0%
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✓
0
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-21: ✗ · run-22: ✗ · run-23: ✗ · run-24: ✗ · run-25: ✗
72.0%
100
T21-L1 · Twig
Inside {{ }}, Twig allows calling arbitrary PHP code directly.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T21-L2 · Twig
By default, Twig auto-escapes printed variables.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T21-L3 · Twig
The Twig |e filter escapes a string for safe output in an HTML context.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
0
T21-L4 · Twig
Which filter from twig/intl-extra formats a number according to a locale?
Верный ответ: format_number
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T21-L5 · Twig
The |raw filter disables auto-escaping for the value.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T21-L6 · Twig
In Twig, {{ }} prints an expression value, while {% %} executes tags — conditions, loops, set.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T21-L7 · Twig
In Twig you cannot declare a variable inside a template — values only come from the controller.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T21-L8 · Twig
Which Twig function dumps the debug structure of a variable (array, object)?
Верный ответ: dump
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
20
T21-L9 · Twig
What does this Twig template output? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
0
T21-L10 · Twig
What exception class does render() of this template throw? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-36: ✗ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
72.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
80
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-06: ✓ · run-07: ✓ · run-08: ✗ · run-09: ✓ · run-10: ✓
0
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
70.0%
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-21: ✗ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
94.0%
100
T24-L1 · Bootstrap
Bootstrap is a CSS/JS library of ready-made UI components, not an SPA framework.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L2 · Bootstrap
Which Bootstrap class gives a responsive container with a fixed max width per breakpoint?
Верный ответ: container
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L3 · Bootstrap
The Bootstrap grid is built on CSS floats and splits a row into 16 columns.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L4 · Bootstrap
Bootstrap's named breakpoints (the infix used in class names) are sm, md, lg, xl, xxl — five of them.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T24-L5 · Bootstrap
Utilities like .mt-3 or .px-2 use the spacing scale: the number is a multiple of $spacer.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T24-L6 · Bootstrap
Which Bootstrap 5 data attribute enables an interactive component (e.g. dropdown) on an element?
Верный ответ: data-bs-toggle
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 components work without jQuery — in plain vanilla JS.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L8 · Bootstrap
Dark mode in Bootstrap is enabled with a .dark class on the root element.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L9 · Bootstrap
What is the max-width of .container in Bootstrap 5.3 at a 992px viewport?
Верный ответ: 960
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T24-L10 · Bootstrap
Which utility sets the text color in Bootstrap 5.3 for `<p class="text-danger text-primary">…</p>`? Answer with the winning class name.
Верный ответ: text-danger
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
94.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-06: ✗ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
92.0%
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
60
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-21: ✓ · run-22: ✗ · run-23: ✓ · run-24: ✓ · run-25: ✗
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
94.0%
100
T14-L1 · Doctrine
Doctrine ORM creates database tables on the fly the first time an entity is used at runtime.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T14-L2 · Doctrine
Which EntityManager method marks a new object as managed without executing SQL until flush()?
Верный ответ: persist
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T14-L3 · Doctrine
In Doctrine ORM 3, the EntityManager::merge() method exists and makes the passed object managed.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✗ · run-39: ✗ · run-40: ✓
100
T14-L4 · Doctrine
DQL queries are written in terms of entities and their fields, not tables and columns.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T14-L5 · Doctrine
What does $repository->find(999) return when no record with id 999 exists?
Верный ответ: null
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
60
T14-L6 · Doctrine
DoctrineBundle in Symfony automatically calls flush() at the end of every request.
Верный ответ: no
run-36: ✗ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
100
T14-L7 · Doctrine
For a managed entity, changing a property is enough: flush() commits the change without an explicit persist() — the Unit of Work tracks changes.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T14-L8 · Doctrine
remove() executes the SQL DELETE immediately, without waiting for flush().
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T14-L9 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T14-L10 · Doctrine
Given: Doctrine ORM 3, an EntityManager on in-memory SQLite, entity User with an auto-increment primary key. The users table is empty. What does this code output? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
92.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
20
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
88.0%
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
40
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-21: ✓ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
94.0%
100
T15-L1 · PostgreSQL
PostgreSQL uses MVCC, therefore readers block writers and writers block readers.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L2 · PostgreSQL
Which SQL command shows a query's execution plan without executing the query?
Верный ответ: explain
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L3 · PostgreSQL
SERIAL and GENERATED ... AS IDENTITY are just two names for the same mechanism.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L4 · PostgreSQL
By default, a PostgreSQL UNIQUE constraint allows only one row with NULL in the column.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L5 · PostgreSQL
Which PostgreSQL aggregate function concatenates strings with a separator?
Верный ответ: string_agg
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L6 · PostgreSQL
Plain VACUUM returns the space occupied by dead tuples to the operating system.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
20
T15-L7 · PostgreSQL
Which keyword in a window function definition partitions rows into groups the function is computed over?
Верный ответ: partition by
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✗ · run-40: ✗
100
T15-L8 · PostgreSQL
The READ COMMITTED isolation level protects against non-repeatable reads.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L9 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T15-L10 · PostgreSQL
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
92.0%
PostgreSQL: transactions and indexes
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✓
86.0%
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T17-L1 · PostgreSQL: transactions and indexes
By default, PostgreSQL wraps each single SQL statement in its own implicit transaction (autocommit).
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L2 · PostgreSQL: transactions and indexes
Which SQL command ends a transaction, committing all its changes?
Верный ответ: commit
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L3 · PostgreSQL: transactions and indexes
Indexes speed up more than SELECT: UPDATE and DELETE with a search on an indexed column benefit too.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L4 · PostgreSQL: transactions and indexes
To roll back part of the statements inside a transaction, PostgreSQL uses SAVEPOINT.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L5 · PostgreSQL: transactions and indexes
EXPLAIN ANALYZE shows the query plan without executing the query.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L6 · PostgreSQL: transactions and indexes
Which PostgreSQL extension adds vector types and indexes for embedding search?
Верный ответ: vector
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L7 · PostgreSQL: transactions and indexes
A partial index (CREATE INDEX ... WHERE ...) is built only over rows satisfying the condition.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L8 · PostgreSQL: transactions and indexes
The SERIALIZABLE level in PostgreSQL is implemented by locking the rows a transaction reads.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L9 · PostgreSQL: transactions and indexes
What does this SQL query return (PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T17-L10 · PostgreSQL: transactions and indexes
What does this sequence of psql commands output? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100.0%
HTTP and REST API
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100.0%
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
80
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-21: ✗ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
98.0%
100
T19-L1 · HTTP and REST API
HTTP status 201 means the request resulted in a new resource being created.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L2 · HTTP and REST API
Which HTTP status means a successful request with an empty response body (e.g. after DELETE)?
Верный ответ: 204
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
80
T19-L3 · HTTP and REST API
The DELETE method is idempotent per the HTTP specification: repeating the request for the same resource does not change the outcome.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✗ · run-40: ✓
100
T19-L4 · HTTP and REST API
The Access-Control-Allow-Origin header is sent by the client so that the server agrees to accept requests from another origin.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L5 · HTTP and REST API
Status 429 Too Many Requests is used when a client exceeds a rate limit.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L6 · HTTP and REST API
5xx codes mean a client error, while 4xx means a server-side error.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L7 · HTTP and REST API
Which HTTP header indicates the MIME type of the request or response body?
Верный ответ: content-type
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L8 · HTTP and REST API
PATCH is not required to be idempotent per RFC 5789, unlike PUT.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L9 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T19-L10 · HTTP and REST API
Which HTTP method does this command send? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
98.0%
Security and OAuth
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
60
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-06: ✓ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
80
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
94.0%
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100.0%
100
T20-L1 · Security and OAuth
Checking a password by comparing its hash to the stored hash with a plain == is sufficient.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L2 · Security and OAuth
A CSRF token is issued by the server (bound to the session) and verified server-side on unsafe requests (POST etc.).
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L3 · Security and OAuth
Which HTTP header enables the CSP (Content Security Policy) policy?
Верный ответ: content-security-policy
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L4 · Security and OAuth
OAuth 2.0 is an authentication protocol: the access token tells you who the user is.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L5 · Security and OAuth
XSS is prevented by validating input on the server before writing it to the database.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L6 · Security and OAuth
In the OAuth 2.0 authorization code flow, which parameter arrives at the redirect_uri and is exchanged for an access token?
Верный ответ: code
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L7 · Security and OAuth
A refresh token lives longer than an access token and allows obtaining a new access token without the user logging in again.
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L8 · Security and OAuth
A password salt must be kept secret: without it the hash cannot be verified.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L9 · Security and OAuth
A client hits the token endpoint (RFC 6749) with a non-existent client_id. What value of the error field does the endpoint return?
Верный ответ: invalid_client
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T20-L10 · Security and OAuth
OAuth 2.0: the client started the flow with response_type=token. In which part of the redirect_uri does the authorization server pass the access_token?
Верный ответ: fragment
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100.0%
Testing: PHPUnit
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
40
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-06: ✓ · run-07: ✗ · run-08: ✓ · run-09: ✗ · run-10: ✗
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
0
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✗ · run-10: ✗
20
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-06: ✗ · run-07: ✗ · run-08: ✗ · run-09: ✓ · run-10: ✗
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-06: ✓ · run-07: ✓ · run-08: ✓ · run-09: ✓ · run-10: ✓
76.0%
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
20
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-21: ✗ · run-22: ✓ · run-23: ✗ · run-24: ✗ · run-25: ✗
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-21: ✓ · run-22: ✓ · run-23: ✓ · run-24: ✓ · run-25: ✓
92.0%
100
T18-L1 · Testing: PHPUnit
PHPUnit runs test methods of any class — extending TestCase is not required.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L2 · Testing: PHPUnit
In PHPUnit, setUp() runs once before all tests of the class.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L3 · Testing: PHPUnit
A data provider lets a test run with exactly one set of arguments.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L4 · Testing: PHPUnit
Which PHPUnit method declares an expectation that an exception of a given class is thrown?
Верный ответ: expectexception
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L5 · Testing: PHPUnit
In PHPUnit, a stub verifies which methods were called on it, while a mock only returns data.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L6 · Testing: PHPUnit
In PHPUnit 10+, the recommended way to pass data to a test is the #[DataProvider] attribute (the @dataProvider annotation is deprecated).
Верный ответ: yes
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L7 · Testing: PHPUnit
PHPUnit does not allow one test to depend on the result of another.
Верный ответ: no
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
40
T18-L8 · Testing: PHPUnit
Which PHPUnit command-line option makes tests run in random order?
Верный ответ: --order-by=random
run-36: ✓ · run-37: ✗ · run-38: ✗ · run-39: ✓ · run-40: ✗
100
T18-L9 · Testing: PHPUnit
How many tests will this command run? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` Command: `phpunit CalcTest.php --filter test_sum` (PHPUnit 10.5)
Верный ответ: 6
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
100
T18-L10 · Testing: PHPUnit
How many tests will this command run, and how many of them will fail? Answer with two comma-separated numbers (ran, failed). ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` Command: `phpunit Calc2Test.php` (PHPUnit 10.5)
Верный ответ: 2,1
run-36: ✓ · run-37: ✓ · run-38: ✓ · run-39: ✓ · run-40: ✓
94.0%

qwen3.8:latest · язык: zh

think: offитог 83.2% · стаб. 61.1% · время 9.8 мин
think: lowитог 90.2% · стаб. 81.8% · время 38.3 мин
think: mediumитог 91.0% · стаб. 83.4% · время 53.7 мин
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
L1
L2
L3
L4
L5
L6
L7
L8
L9
L10
语法与运算符
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
60
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✗
60
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
20
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
40
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
70.0%
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
78.0%
100
T01-L1 · 语法与运算符
双引号字符串和单引号字符串的处理方式完全相同,区别只在速度。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L2 · 语法与运算符
?? 运算符按 isset 的语义工作,对未定义的变量不会产生任何警告。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L3 · 语法与运算符
下面代码输出什么:echo 'a', 'b';
Верный ответ: ab
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T01-L4 · 语法与运算符
print 返回值 1,可以用在表达式内部。
Верный ответ: 是
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✓
100
T01-L5 · 语法与运算符
如果左侧操作数为假,?: 运算符(Elvis 运算符)返回左侧操作数。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T01-L6 · 语法与运算符
在 PHP 8 中,连接运算符(.)的优先级低于加法和减法。
Верный ответ: 是
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T01-L7 · 语法与运算符
表达式 2 ** 3 ** 2 在 PHP 中按 (2 ** 3) ** 2 计算,即等于 64。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T01-L8 · 语法与运算符
下面代码输出什么字符串:echo '总和: ' . 2 + 3;(PHP 8)?
Верный ответ: сумма: 5
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T01-L9 · 语法与运算符
这段代码会输出什么? ```php echo intdiv(7, 2) . intdiv(-7, 2); ```
Верный ответ: 3-3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T01-L10 · 语法与运算符
这段代码会输出什么? ```php echo -3 ** 2; ```
Верный ответ: -9
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
86.0%
类型与比较
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
88.0%
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
40
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✗
90.0%
100
T02-L1 · 类型与比较
在严格比较(===)下,数组被视为相等,与元素顺序无关。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L2 · 类型与比较
表达式 0 == false 返回 false,因为这是严格比较。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L3 · 类型与比较
在 PHP 8 中,表达式 "abc" == 0 的结果是 true。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T02-L4 · 类型与比较
在宽松比较下,null 同时等于 0、空字符串和 false。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T02-L5 · 类型与比较
表达式 (int) '42abc' 返回什么?
Верный ответ: 42
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L6 · 类型与比较
表达式 '5' + 5 返回什么?
Верный ответ: 10
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L7 · 类型与比较
转换为字符串时,false 会变成 "0"。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L8 · 类型与比较
表达式 0.1 + 0.2 === 0.3 的结果是 false。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T02-L9 · 类型与比较
这段代码会输出什么? ```php echo '1e1' == '10' ? 'true' : 'false'; ```
Верный ответ: true
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T02-L10 · 类型与比较
这段代码会输出什么? ```php switch ('a') { case 0: echo 'zero'; break; default: echo 'other'; } ```
Верный ответ: other
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✗
92.0%
字符串
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
90.0%
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
90.0%
100
T03-L1 · 字符串
strrev() 能正确反转 UTF-8 字符串。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L2 · 字符串
str_contains('Hello world', 'world') 返回 true。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L3 · 字符串
str_pad() 只能在字符串右侧补齐。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L4 · 字符串
默认情况下 trim() 只去掉空格,不会处理制表符和换行符。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L5 · 字符串
对 UTF-8 字符串,strlen('你好') 返回多少个字节(BYTES)?
Верный ответ: 12
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L6 · 字符串
表达式 substr('abcdef', -3) 返回什么?
Верный ответ: def
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L7 · 字符串
ucfirst() 会原地修改传入的字符串。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L8 · 字符串
heredoc 支持变量插值,而 nowdoc 不支持。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T03-L9 · 字符串
这段代码会输出什么? ```php echo strtr('abc', ['a' => '1', 'ab' => '2']); ```
Верный ответ: 2c
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T03-L10 · 字符串
这段代码会输出什么? ```php echo '[' . substr('hello', -10) . ']'; ```
Верный ответ: [hello]
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
90.0%
数组
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
74.0%
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
100
T04-L1 · 数组
sort() 函数会保持数组键与值之间的对应关系。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L2 · 数组
数组中的字符串键 '5' 会存成整数 5。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L3 · 数组
in_array() 函数默认使用严格比较(===)。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L4 · 数组
不带回调时,array_filter() 会删除数组中所有“空”(falsy)元素。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L5 · 数组
默认情况下,array_slice() 会保留数组原有的数字键。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T04-L6 · 数组
array_slice([10, 20, 30, 40], 1, 2) 返回什么?
Верный ответ: [20,30]
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ⬜
100
T04-L7 · 数组
count(['a' => 1] + ['a' => 9, 'b' => 2]) 的元素个数是多少?
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T04-L8 · 数组
从 PHP 8.1 起,展开运算符 [...$a, ...$b] 支持带字符串键的数组。
Верный ответ: 是
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✗
100
T04-L9 · 数组
这段代码会输出什么? ```php $a = ['k' => 1, 'n' => 2]; $b = ['k' => 9, 'm' => 3]; echo implode(',', array_keys($a + $b)); ```
Верный ответ: k,n,m
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T04-L10 · 数组
这段代码会输出什么? ```php $a = [[1, 'x', 2], [2, 'y', 1], [3, 'z', 2]]; usort($a, fn($p, $q) => $p[2] <=> $q[2]); echo implode('', array_column($a, 1)); ```
Верный ответ: yxz
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
92.0%
函数与闭包
40
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
60
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
60
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
82.0%
100
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
40
T05-L1 · 函数与闭包
在同一个调用中,命名参数不能与数组展开 ...$args 组合使用。
Верный ответ: 否
run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
T05-L2 · 函数与闭包
不使用 use 的匿名函数能看到外部作用域的变量。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L3 · 函数与闭包
调用 f(1, 2, 3) 时,function f($a) { return func_num_args(); } 内部的 func_num_args() 返回什么?
Верный ответ: 3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L4 · 函数与闭包
箭头函数 fn 的函数体可以是用花括号包起来的多个表达式。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L5 · 函数与闭包
箭头函数 fn 按引用捕获外部变量(惰性地,在使用时才取值)。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L6 · 函数与闭包
用 static function () {} 声明的闭包不会捕获 $this。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L7 · 函数与闭包
下面代码输出什么:$x = 5; $f = function () use ($x) { return $x; }; $x = 7; echo $f();
Верный ответ: 5
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L8 · 函数与闭包
在弱类型模式(不用 strict_types)下,把字符串 "5" 传给 int 类型的参数是允许的。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T05-L9 · 函数与闭包
这段代码会输出什么? ```php class P { private int $v = 3; public function g(): int { return $this->v; } } $p = new P; $f = $p->g(...); $p = null; echo $f(); ```
Верный ответ: 3
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T05-L10 · 函数与闭包
这段代码会输出什么? ```php function f(int $a, int $b): int { return $a - $b; } echo f(...['b' => 1, 'a' => 5]); ```
Верный ответ: 4
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
92.0%
OOP:类与继承
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
94.0%
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-26: ✓ · run-27: ⬜ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
100
T06-L1 · OOP:类与继承
PHP 支持构造函数属性提升(promotion):public function __construct(private int $x) {}。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L2 · OOP:类与继承
哪个关键字禁止在子类中重写方法?
Верный ответ: final
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L3 · OOP:类与继承
声明为 final 的方法不能在子类中重写。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L4 · OOP:类与继承
父类中 private 可见性的属性在子类中可以访问。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L5 · OOP:类与继承
get_class(new class {}) 返回什么?请回答 NUL 字节之前的部分(不含文件路径)。
Верный ответ: class@anonymous
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L6 · OOP:类与继承
父类的 private 方法不属于继承契约:子类可以用任意可见性声明同名方法。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L7 · OOP:类与继承
魔术方法 __get() 只会在访问不存在的属性时被调用。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L8 · OOP:类与继承
对 readonly 属性重复赋值会抛出什么——Exception 还是 Error?
Верный ответ: error
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L9 · OOP:类与继承
这段代码会输出什么? ```php class A { public function who(): string { return static::class; } } class B extends A {} echo (new B)->who(); ```
Верный ответ: b
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T06-L10 · OOP:类与继承
这段代码在 PHP 8.5 上会输出什么? ```php class C { public int $x = 0 { set { $this->x = $value * 2; } } } $c = new C; $c->x = 5; echo $c->x; ```
Верный ответ: 10
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
接口、trait 与 enum
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✗
80
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
84.0%
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✓ · run-30: ✗
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90.0%
100
T07-L1 · 接口、trait 与 enum
接口可以声明常量。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L2 · 接口、trait 与 enum
哪个运算符用于检查对象是否为某个类或接口的实例?
Верный ответ: instanceof
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T07-L3 · 接口、trait 与 enum
接口可以声明静态方法。
Верный ответ: 是
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T07-L4 · 接口、trait 与 enum
instanceof 运算符只检查类的继承:它不考虑接口。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L5 · 接口、trait 与 enum
接口方法可以像 trait 方法一样带有默认实现。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L6 · 接口、trait 与 enum
抽象类中抽象方法的可见性可以是 protected。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L7 · 接口、trait 与 enum
对于 enum Foo { case A; case B; case C; },Foo::cases() 返回多少个元素?
Верный ответ: 3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L8 · 接口、trait 与 enum
trait 可以声明常量。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L9 · 接口、trait 与 enum
这段代码会输出什么? ```php trait TA { public function f(): string { return 'A'; } } trait TB { public function f(): string { return 'B'; } } class TC { use TA, TB { TB::f insteadof TA; TA::f as g; } } echo (new TC)->f() . (new TC)->g(); ```
Верный ответ: ba
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T07-L10 · 接口、trait 与 enum
这段代码会输出什么? ```php trait Counter { public static int $n = 0; } class CX { use Counter; } class CY { use Counter; } CX::$n = 1; echo CY::$n; ```
Верный ответ: 0
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90.0%
异常与错误
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
94.0%
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
100
T08-L1 · 异常与错误
Throwable 接口是 Exception 和 Error 的共同祖先。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L2 · 异常与错误
catch (Exception $e) 块也能捕获 TypeError,因为 TypeError 最终继承自 Exception。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L3 · 异常与错误
@ 运算符也能抑制异常。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L4 · 异常与错误
intdiv(5, 0) 会抛出哪个错误类?
Верный ответ: divisionbyzeroerror
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L5 · 异常与错误
只有当异常被 catch 块捕获时,finally 块才会执行。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L6 · 异常与错误
在 finally 块内抛出的异常对 try 块的结果没有任何影响。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L7 · 异常与错误
表达式 (bool) new Exception('x') 返回什么?
Верный ответ: true
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L8 · 异常与错误
通过 register_shutdown_function() 注册的函数会在调用 exit 时执行。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L9 · 异常与错误
这段代码会输出什么? ```php try { try { throw new RuntimeException('first'); } finally { throw new LogicException('second'); } } catch (LogicException $e) { echo $e->getMessage(); } ```
Верный ответ: second
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T08-L10 · 异常与错误
这段代码会输出什么? ```php function f(): int { try { return 1; } finally { return 2; } } echo f(); ```
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
命名空间与自动加载
80
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
40
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
88.0%
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
98.0%
100
T09-L1 · 命名空间与自动加载
use App\Service\Mailer; 这条语句本身就会加载包含该类的文件。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L2 · 命名空间与自动加载
要导入函数(而不是类),use 后面写哪个词:function 还是 const?
Верный ответ: function
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L3 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Controller\Api\UserController 会放进哪个文件(相对 src/ 的路径)?
Верный ответ: src/controller/api/usercontroller.php
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L4 · 命名空间与自动加载
引入 vendor/autoload.php 会通过 spl_autoload_register() 注册自动加载器。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L5 · 命名空间与自动加载
魔术常量 __NAMESPACE__ 包含当前命名空间的名称。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L6 · 命名空间与自动加载
在 new 中,非限定类名(不带前导 \)会从全局根开始解析。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L7 · 命名空间与自动加载
在 PSR-4 映射 «App\ → src/» 下,类 App\Model\User 位于文件 src/Model/User.php。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T09-L8 · 命名空间与自动加载
use 语句可以写在函数体内——该导入只对这个函数生效。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T09-L9 · 命名空间与自动加载
这段代码会输出什么? ```php namespace N; use App\Foo as Baz; echo Baz::class . '|' . \Baz::class; ```
Верный ответ: app\foo|baz
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T09-L10 · 命名空间与自动加载
这段代码会输出什么? ```php namespace Ns; class Foo {} $c = 'Foo'; echo (class_exists($c) ? 'yes' : 'no') . (class_exists(__NAMESPACE__ . '\\' . $c) ? 'yes' : 'no'); ```
Верный ответ: noyes
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
98.0%
引用与作用域
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
92.0%
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
100
T10-L1 · 引用与作用域
数组在赋值时是复制,而不是按引用传递。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L2 · 引用与作用域
下面代码输出什么:$a = [1, 2]; $b = $a; $b[] = 3; echo count($a);
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L3 · 引用与作用域
在函数内部,不通过 global、$GLOBALS 或参数传递,就无法访问全局作用域的用户变量。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L4 · 引用与作用域
在函数内 unset($GLOBALS['x']) 只对该函数删除这个全局变量。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L5 · 引用与作用域
下面代码输出什么:function inc(&$x) { $x++; } $n = 5; inc($n); echo $n;
Верный ответ: 6
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T10-L6 · 引用与作用域
按值遍历数组的 foreach 操作的是“活”数组:循环内对数组的修改在同一个遍历过程中可见。
Верный ответ: 否
run-41: ✗ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T10-L7 · 引用与作用域
静态属性在每个实例中各自独立:一个对象中的修改对其他对象不可见。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L8 · 引用与作用域
数组可以用布尔值 true 作为键,并且它会以 bool 类型保存。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L9 · 引用与作用域
这段代码会输出什么? ```php $a = [1, 2, 3]; foreach ($a as &$v) {} $v = 99; echo implode(',', $a); ```
Верный ответ: 1,2,99
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T10-L10 · 引用与作用域
这段代码会输出什么? ```php class A { public function inc(): int { static $n = 0; return ++$n; } } class B extends A {} $a = new A; $b = new B; $a->inc(); $b->inc(); echo $a->inc(); ```
Верный ответ: 3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
96.0%
生成器、迭代器与 SPL
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
88.0%
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✗
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
82.0%
100
T11-L1 · 生成器、迭代器与 SPL
生成器内部可以使用带值的 return,该值可以通过 $gen->getReturn() 取到。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L2 · 生成器、迭代器与 SPL
已经遍历完的生成器可以通过 rewind() 倒回并重新遍历。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T11-L3 · 生成器、迭代器与 SPL
yield from 语法会把遍历委托给另一个生成器或可迭代对象。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T11-L4 · 生成器、迭代器与 SPL
对于 function g() { yield 1; },get_class(g()) 返回什么?
Верный ответ: generator
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L5 · 生成器、迭代器与 SPL
count(iterator_to_array((function () { yield from [1, 2, 3]; })())) 返回多少个元素?
Верный ответ: 3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L6 · 生成器、迭代器与 SPL
SplStack 类实现的是 FIFO 队列。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L7 · 生成器、迭代器与 SPL
ArrayIterator 可以包装数组,并通过 Iterator 接口遍历它。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T11-L8 · 生成器、迭代器与 SPL
ArrayObject 类的对象不能用 foreach 遍历。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
T11-L9 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function g(): Generator { $x = yield 1; return $x + 1; } $g = g(); $g->send(10); echo $g->getReturn(); ```
Верный ответ: 11
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✓
0
T11-L10 · 生成器、迭代器与 SPL
这段代码会输出什么? ```php function inner(): Generator { yield 1; yield 2; return 'ok'; } function outer(): Generator { $r = yield from inner(); yield $r; } echo implode(',', iterator_to_array(outer())); ```
Верный ответ: ok,2
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
80.0%
配置与安全
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
0
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
86.0%
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✗
96.0%
100
T12-L1 · 配置与安全
password_hash() 会自动生成盐(salt)——不需要单独传盐。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L2 · 配置与安全
在 PHP 8 中,PASSWORD_DEFAULT 算法是自动加盐的 md5。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L3 · 配置与安全
password_verify('secret', password_hash('secret', PASSWORD_DEFAULT)) 返回什么?
Верный ответ: true
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L4 · 配置与安全
strip_tags() 函数能防 SQL 注入。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L5 · 配置与安全
session_regenerate_id() 函数用于在用户登录时防范会话固定(session fixation)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L6 · 配置与安全
哪个内置函数返回 SAPI 的名称(例如 cli)?
Верный ответ: php_sapi_name
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L7 · 配置与安全
session_destroy() 删除服务器端的会话数据,但不会删除用户浏览器中的 cookie。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L8 · 配置与安全
不调用 session_start(),$_SESSION 数组也会自动加载会话数据。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T12-L9 · 配置与安全
这段代码会输出什么? ```php $hash = password_hash('x', PASSWORD_BCRYPT, ['cost' => 4]); echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 4]) ? 'yes' : 'no'; echo password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 5]) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T12-L10 · 配置与安全
这段代码在 PHP 8.5 上会输出什么? ```php echo (E_ALL & 2048) === 0 ? 'strict-out' : 'strict-in'; ```
Верный ответ: strict-out
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✗
94.0%
PHP 8.4–8.5
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
60
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
80
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
24.0%
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
20
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
20
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
44.0%
0
VC-L1 · PHP 8.4–8.5
函数 array_find() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.4
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
VC-L2 · PHP 8.4–8.5
属性钩子(property hooks,直接在属性声明里写 get/set)进入了 PHP 8.4。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VC-L3 · PHP 8.4–8.5
非对称可见性(public private(set) string $name)出现在 PHP 8.4。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
VC-L4 · PHP 8.4–8.5
属性 #[\NoDiscard] 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L5 · PHP 8.4–8.5
管道运算符 |> 最早出现在哪个 PHP 版本?请回答版本号。
Верный ответ: 8.5
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L6 · PHP 8.4–8.5
clone-with 语法 clone($obj, ['x' => 1]) 是在哪个 PHP 版本中出现的?请回答版本号。
Верный ответ: 8.5
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L7 · PHP 8.4–8.5
函数 array_first() 和 array_last() 是在哪个 PHP 版本中引入的?
Верный ответ: 8.5
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
VC-L8 · PHP 8.4–8.5
截至 2026-11-07,RFC Partial Function Application v2 被接受进入哪个 PHP 版本?请回答版本号。
Верный ответ: 8.6
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
VC-L9 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class C { public function hi(): string { return 'hi'; } } echo new C()->hi(); ```
Верный ответ: hi
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VC-L10 · PHP 8.4–8.5
这段代码在 PHP 8.5 上会输出什么? ```php class Heavy { public int $v = 0; } $r = new ReflectionClass(Heavy::class); $o = $r->newLazyGhost(function (Heavy $obj) { $obj->v = 21; }); echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; $o->v; echo $r->isUninitializedLazyObject($o) ? 'yes' : 'no'; ```
Верный ответ: yesno
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40.0%
PHP:8.6+ 与未来
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
60
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✗
80
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
60.0%
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
80
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-26: ✗ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
67.5%
0
VF-L1 · PHP:8.6+ 与未来
截至 2026-11-07,RFC clamp_v2(函数 clamp())在哪个 PHP 版本中实现?请回答版本号。
Верный ответ: 8.6
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
VF-L2 · PHP:8.6+ 与未来
截至 2026-11-07,RFC Context Managers v2 已被 PHP 接受。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
VF-L3 · PHP:8.6+ 与未来
RFC Bound-Erased Generic Types(泛型)已于 2026 年被拒绝。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✗
100
VF-L4 · PHP:8.6+ 与未来
截至 2026-11-07,默认启用多线程(ZTS)的 RFC 已在 PHP 中被接受。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VF-L5 · PHP:8.6+ 与未来
PHP 8.5 仍然没有泛型(参数化类型)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VF-L6 · PHP:8.6+ 与未来
截至 2026-11-07,PHP 的最新稳定版本是 8.5,PHP 8.6 尚未发布(GA 为 2026-11-19)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
VF-L7 · PHP:8.6+ 与未来
PHP 6 分支从未发布:PHP 5.6 之后直接就是 PHP 7.0。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
VF-L8 · PHP:8.6+ 与未来
向核心添加 #[\Deprecated] 属性的 RFC 已被接受。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✗
80.0%
整洁架构
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
88.0%
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90.0%
100
T25-L1 · 整洁架构
整洁架构与洋葱架构的依赖规则:内层对外层一无所知——依赖指向中心。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L2 · 整洁架构
领域实体既不导入 Doctrine 也不导入 Symfony——只用语言本身(最多加标准库)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L3 · 整洁架构
控制器和 Twig 模板属于业务逻辑层,因为是它们调用用例。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T25-L4 · 整洁架构
洋葱架构的最中心是什么?
Верный ответ: domain model
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T25-L5 · 整洁架构
层边界的破坏可以自动捕获:层间依赖分析器(如 deptrac)会在出现禁止的调用时报错。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L6 · 整洁架构
用例(interactor)可以接受 HTTP 请求或 EntityManager 作为参数——这样更简单。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L7 · 整洁架构
在接口背后隐藏存储机制、并提供聚合/实体集合的组件叫什么?
Верный ответ: repository
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L8 · 整洁架构
在整洁架构中,把 PostgreSQL 换成其他数据库只会影响外层——领域和用例保持不变。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L9 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class OrderService { public function __construct( private PlaceOrder $handler, private Db $db, ) {} } ```
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T25-L10 · 整洁架构
层:Domain、Application、Infrastructure。deptrac 规则:Application → Domain;Infrastructure → Domain、Application;Domain → 仅 Domain。 对于这个类,deptrac 会报告多少个违规(Violations)? ```php namespace App\Domain; use App\Application\PlaceOrder; use App\Infrastructure\Db; class BillingService { public function __construct( private PlaceOrder $handler, private Db $db, private \App\Infrastructure\Logger $logger, ) {} } ```
Верный ответ: 3
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90.0%
DDD
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
88.0%
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
90.0%
100
T26-L1 · DDD
在 DDD 中,聚合(aggregate)只是数据库表的另一个名字。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L2 · DDD
值对象(Value Object)不可变,按字段值比较,而不是按标识符。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L3 · DDD
聚合的唯一外部入口——所有变更必须经过它——叫什么?
Верный ответ: aggregate root
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L4 · DDD
在 DDD 中,仓储是针对聚合(其根)声明的,而不是针对每个实体。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L5 · DDD
统一语言(ubiquitous language)是开发者和领域专家共享的模型语言。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T26-L6 · DDD
哪种边界内部模型和语言一致,而边界外同样的词对应别的模型?
Верный ответ: bounded context
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T26-L7 · DDD
贫血模型(只有 getter/setter,逻辑全在服务里)是 DDD 推荐的风格。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L8 · DDD
限界上下文意味着每个上下文都有自己的模型:同一个概念在不同上下文中是不同的类。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L9 · DDD
这段代码会输出什么? ```php final class Order { private array $items = []; public function add(string $sku): void { $this->items[$sku] = true; } public function count(): int { return count($this->items); } public function remove(string $sku): void { if (count($this->items) === 1) { throw new DomainException('last item'); } unset($this->items[$sku]); } } $o = new Order; $o->add('a'); try { $o->remove('a'); } catch (DomainException) { } echo $o->count(); ```
Верный ответ: 1
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T26-L10 · DDD
这段代码会输出什么? ```php final class Money { public function __construct(public readonly int $amount) {} public function add(Money $o): Money { return new self($this->amount + $o->amount); } } $a = new Money(10); $c = $a->add(new Money(5)); echo $a->amount . ',' . $c->amount; ```
Верный ответ: 10,15
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
90.0%
Symfony
60
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
80
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
82.0%
60
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
94.0%
100
T13-L1 · Symfony
Symfony 的 DI 容器中的服务默认是惰性创建的——在首次使用时才实例化。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L2 · Symfony
Symfony 的哪条控制台命令会列出所有已注册的路由?
Верный ответ: debug:router
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L3 · Symfony
Symfony 的自动装配(autowiring)需要在 services.yaml 中手动声明每一个服务。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L4 · Symfony
Twig 模板会编译成 PHP 类并在请求之间缓存。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L5 · Symfony
在 Symfony 的 dev 环境中,DI 容器只在被跟踪的文件变化后重建,而不是每个请求都重建。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L6 · Symfony
哪个环境变量决定 Symfony 的活动环境(dev/prod)?
Верный ответ: app_env
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L7 · Symfony
控制器方法可以是 private——Symfony 的路由对类中的任何方法都有效。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L8 · Symfony
事件订阅者(EventSubscriber)总是比监听器(listener)更早收到事件,因为接口赋予它们优先级。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L9 · Symfony
这段代码会输出什么? ```php use Symfony\Component\HttpFoundation\Request; $r = Request::create('/demo', 'GET', [], [], [], ['HTTP_X_TOKEN' => 'abc']); echo $r->headers->get('X-Token') === 'abc' ? 'mapped' : 'missing'; ```
Верный ответ: mapped
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T13-L10 · Symfony
这段代码会输出什么? ```php use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\Event; $d = new EventDispatcher(); $out = ''; $d->addListener('e', function () use (&$out) { $out .= 'B'; }, 10); $d->addListener('e', function () use (&$out) { $out .= 'A'; }); $d->addListener('e', function () use (&$out) { $out .= 'C'; }, 5); $d->dispatch(new Event(), 'e'); echo $out; ```
Верный ответ: bca
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
Symfony:安全与表单
60
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
80
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
66.0%
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
92.0%
100
T22-L1 · Symfony:安全与表单
在现代 Symfony(6.0+)中,认证基于 authenticator 类(AuthenticatorInterface);旧的 guard 体系已被移除。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L2 · Symfony:安全与表单
Symfony 的哪个属性直接在控制器方法上检查角色/权限(没有它就返回 403)?
Верный ответ: isgranted
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L3 · Symfony:安全与表单
Voter(投票者)是 Symfony 检查对具体对象访问权的机制:isGranted('EDIT', $post)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L4 · Symfony:安全与表单
在现代 Symfony(7+)中,验证约束用 PHP 属性声明(#[Assert\NotBlank]);不再支持 doctrine 注解。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L5 · Symfony:安全与表单
Symfony 表单的 CSRF 保护默认开启:表单在提交时会校验令牌。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L6 · Symfony:安全与表单
Symfony 的表单验证在服务器端执行,即使客户端(HTML5)检查已经通过。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L7 · Symfony:安全与表单
Symfony maker 的哪条命令会生成表单类(FormType)?
Верный ответ: make:form
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T22-L8 · Symfony:安全与表单
Symfony 以明文形式把用户密码存在会话中。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T22-L9 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $v = Validation::createValidator(); echo count($v->validate([''], [new Assert\NotBlank()])); ```
Верный ответ: 0
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
60
T22-L10 · Symfony:安全与表单
这段代码会输出什么? ```php use Symfony\Component\Form\Forms; use Symfony\Component\Form\Extension\Core\Type\TextType; $factory = Forms::createFormFactoryBuilder()->getFormFactory(); $form = $factory->create(TextType::class); try { echo $form->isValid() ? 'valid' : 'invalid'; } catch (Throwable $e) { echo get_class($e); } ```
Верный ответ: symfony\component\form\exception\logicexception
run-41: ✓ · run-42: ✗ · run-43: ⬜ · run-44: ✓ · run-45: ✓
94.0%
Symfony:配置与服务
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
80
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
80
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
82.0%
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
100
T23-L1 · Symfony:配置与服务
Symfony 的 bundle 配置放在 config/packages 中——每个 bundle 或主题一个文件。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T23-L2 · Symfony:配置与服务
包含开发默认值的 .env 文件会提交到仓库,而真正的机密放在不提交的 .env.local 中。
Верный ответ: 是
run-41: ✗ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
100
T23-L3 · Symfony:配置与服务
Symfony 的哪条命令会列出容器中注册的服务及其别名?
Верный ответ: debug:container
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L4 · Symfony:配置与服务
Symfony 容器允许在运行时修改参数:$container->setParameter() 可以在控制器中使用。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L5 · Symfony:配置与服务
默认情况下,Symfony 的服务是公开的(public: true)——可以直接从容器中获取。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L6 · Symfony:配置与服务
如果 config/packages 里没有配置文件,bundle 就无法工作——每个 bundle 都必须有配置。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L7 · Symfony:配置与服务
环境变量的值可以通过 %env(VAR)% 语法注入 services.yaml。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L8 · Symfony:配置与服务
Symfony 的哪个环境变量会开启调试模式(影响 profiler 和 Twig 调试)?
Верный ответ: app_debug
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L9 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->register('a', stdClass::class)->setPublic(true); $c->compile(); echo spl_object_id($c->get('a')) === spl_object_id($c->get('a')) ? 'same' : 'diff'; ```
Верный ответ: same
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T23-L10 · Symfony:配置与服务
这段代码会输出什么? ```php use Symfony\Component\DependencyInjection\ContainerBuilder; $c = new ContainerBuilder(); $c->setParameter('name', 'Bob'); $c->setParameter('greeting', 'hi %name%'); $c->setParameter('message', '%greeting%!'); $c->compile(); echo $c->getParameter('message'); ```
Верный ответ: hi bob!
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
96.0%
Symfony:Messenger
80
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✓
60
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
80
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
82.0%
80
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
40
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✗ · run-30: ✗
80
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✗
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80.0%
100
T16-L1 · Symfony:Messenger
在 Symfony Messenger 中,一条消息只能有一个处理者(handler)。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L2 · Symfony:Messenger
Messenger 的 sync 传输会把消息放进队列交给 worker 处理,和 async 一样。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L3 · Symfony:Messenger
哪条控制台命令会启动处理 Messenger 队列消息的 worker?
Верный ответ: messenger:consume
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T16-L4 · Symfony:Messenger
失败消息的重试策略(retry_strategy)在 Messenger 传输层面配置。
Верный ответ: 是
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
20
T16-L5 · Symfony:Messenger
默认情况下,Messenger 会把消息序列化为 JSON。
Верный ответ: 否
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
20
T16-L6 · Symfony:Messenger
Symfony Scheduler 按计划产生消息,并通过 Messenger 发送。
Верный ответ: 是
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T16-L7 · Symfony:Messenger
哪个内置的 Messenger 传输通过 Doctrine 把消息存到数据库表中?
Верный ответ: doctrine
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L8 · Symfony:Messenger
Messenger 的管道可以用自定义 middleware 扩展,放在内置中间件之前或之后。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L9 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\MiddlewareInterface; use Symfony\Component\Messenger\Middleware\StackInterface; use Symfony\Component\Messenger\Envelope; final class Trace implements MiddlewareInterface { public function __construct(private string $tag) {} public function handle(Envelope $e, StackInterface $stack): Envelope { echo $this->tag; return $stack->next()->handle($e, $stack); } } $bus = new MessageBus([new Trace('M1'), new Trace('M2')]); $bus->dispatch(new Envelope(new stdClass())); ```
Верный ответ: m1m2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T16-L10 · Symfony:Messenger
这段代码会输出什么? ```php use Symfony\Component\Messenger\MessageBus; use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; use Symfony\Component\Messenger\Handler\HandlersLocator; use Symfony\Component\Messenger\Handler\HandlerDescriptor; use Symfony\Component\Messenger\Envelope; class Ping {} $n = 0; $d1 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 1; }, ['alias' => 'h1']); $d2 = new HandlerDescriptor(function (Ping $m) use (&$n) { $n += 10; }, ['alias' => 'h2']); $bus = new MessageBus([ new HandleMessageMiddleware(new HandlersLocator([Ping::class => [$d1, $d2]])), ]); $bus->dispatch(new Envelope(new Ping())); echo $n; ```
Верный ответ: 11
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
74.0%
Symfony:版本
100
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
80
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
86.0%
100
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-26: ✓ · run-27: ✗ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
94.0%
100
T28-L1 · Symfony:版本
Symfony 的主版本每两年发布一次,次版本每六个月一次(5 月和 11 月)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L2 · Symfony:版本
Symfony 8 要求的最低 PHP 版本是多少?
Верный ответ: 8.4
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L3 · Symfony:版本
Symfony 7.0 保留了对文档块注解(验证、路由)的支持。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T28-L4 · Symfony:版本
AssetMapper 无需 node 和 webpack 即可管理 CSS/JS——通过 importmap.php。
Верный ответ: 是
run-41: ✗ · run-42: ✓ · run-43: ✗ · run-44: ✓ · run-45: ✓
100
T28-L5 · Symfony:版本
Symfony 6.4 是没有长期支持的普通版本。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L6 · Symfony:版本
升级到新的 Symfony 主版本时,上一分支的弃用功能仍然可用——主版本不会移除它们。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L7 · Symfony:版本
Symfony 的每个主版本都附带列出变更的 UPGRADE 指南。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L8 · Symfony:版本
Symfony 的哪个组件在没有 node/webpack 的情况下管理资源和 importmap?
Верный ответ: asset-mapper
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L9 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Security\Guard\AbstractGuardAuthenticator::class) ? 'yes' : 'no'; ```
Верный ответ: no
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T28-L10 · Symfony:版本
项目从 Symfony 6.4 升级到 8.1。这段代码在 8.1 上会输出什么? ```php echo class_exists(\Symfony\Component\Routing\Loader\AnnotationClassLoader::class) ? 'yes' : 'no'; echo class_exists(\Symfony\Component\Routing\Loader\AttributeClassLoader::class) ? 'yes' : 'no'; ```
Верный ответ: noyes
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
96.0%
Symfony:8.2 与未来
100
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-11: ✓ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
0
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✓
40
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✗ · run-15: ✗
80
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✗
80
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
60.0%
80
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-26: ✗ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
60
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
100
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
75.0%
80
T29-L1 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 已经发布。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
20
T29-L2 · Symfony:8.2 与未来
截至 2026-11-07,Symfony 8.2 计划于 2026 年 11 月发布,遵循通常的六个月周期。
Верный ответ: 是
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✓
100
T29-L3 · Symfony:8.2 与未来
在 8.1 之后(截至 2026-11-07)会发布哪个 Symfony 版本?
Верный ответ: 8.2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T29-L4 · Symfony:8.2 与未来
Symfony 8.2 是一个主版本,需要为新的 API 重写应用程序。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T29-L5 · Symfony:8.2 与未来
在主分支内更新(8.1 → 8.2)不应需要修改代码——保持向后兼容。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T29-L6 · Symfony:8.2 与未来
在 Symfony 9.0 之前,8.x 分支的最后一个次版本是什么?
Верный ответ: 8.4
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T29-L7 · Symfony:8.2 与未来
Symfony 8.2 将要求 PHP 8.5——必须随之升级 PHP。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T29-L8 · Symfony:8.2 与未来
在 8.x 分支中添加的弃用功能,最早也要到 Symfony 9.0 才会移除。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✗ · run-45: ✓
85.0%
Twig
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
80
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✓
60
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
78.0%
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-26: ✓ · run-27: ✗ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
0
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
0
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✗
68.0%
100
T21-L1 · Twig
在 Twig 中,{{ }} 里面可以直接调用任意的 PHP 代码。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L2 · Twig
默认情况下,Twig 会自动转义输出的变量。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L3 · Twig
Twig 的 |e 过滤器会对字符串进行转义,以便在 HTML 上下文中安全输出。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T21-L4 · Twig
twig/intl-extra 中哪个过滤器按本地化设置格式化数字?
Верный ответ: format_number
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
100
T21-L5 · Twig
|raw 过滤器会对值关闭自动转义。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L6 · Twig
在 Twig 中,{{ }} 输出表达式的值,而 {% %} 执行标签——条件、循环、set。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L7 · Twig
Twig 模板中不能声明变量——值只能由控制器传入。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T21-L8 · Twig
Twig 的哪个函数会输出变量的调试结构(数组、对象)?
Верный ответ: dump
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
0
T21-L9 · Twig
这个 Twig 模板会输出什么? ```twig {{ false|default(2) * 3 }} ```
Верный ответ: 6
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
0
T21-L10 · Twig
渲染这个模板时 render() 会抛出哪个异常类? ```twig {{ 'a' ~ 1 + 2 }} ```
Верный ответ: runtimeerror
run-41: ✗ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✗
70.0%
Bootstrap
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✗ · run-14: ✗ · run-15: ✗
80
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
20
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
64.0%
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✓ · run-30: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
60
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✓
80
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
86.0%
100
T24-L1 · Bootstrap
Bootstrap 是一套现成 UI 组件的 CSS/JS 库,而不是 SPA 框架。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L2 · Bootstrap
Bootstrap 的哪个类提供了按断点固定最大宽度的响应式容器?
Верный ответ: container
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L3 · Bootstrap
Bootstrap 的栅格基于 CSS float,把一行分成 16 列。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L4 · Bootstrap
Bootstrap 的命名断点(类名中的中缀)是 sm、md、lg、xl、xxl——共五个。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
20
T24-L5 · Bootstrap
像 .mt-3 或 .px-2 这样的工具类使用间距刻度:数字是 $spacer 的倍数。
Верный ответ: 否
run-41: ✗ · run-42: ✗ · run-43: ✓ · run-44: ✗ · run-45: ✗
100
T24-L6 · Bootstrap
Bootstrap 5 的哪个 data 属性可以在元素上启用交互组件(例如 dropdown)?
Верный ответ: data-bs-toggle
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L7 · Bootstrap
Bootstrap 5 的组件不依赖 jQuery——使用原生 JS。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L8 · Bootstrap
Bootstrap 的深色模式是通过在根元素上添加 .dark 类开启的。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L9 · Bootstrap
在 Bootstrap 5.3 中,视口宽度 992px 时 .container 的 max-width 是多少?
Верный ответ: 960
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T24-L10 · Bootstrap
在 Bootstrap 5.3 中,`<p class="text-danger text-primary">…</p>` 的文字颜色由哪个工具类决定?回答胜出的类名。
Верный ответ: text-danger
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
92.0%
Doctrine
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✗
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
60
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-11: ✓ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
84.0%
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-26: ✗ · run-27: ✓ · run-28: ✓ · run-29: ✗ · run-30: ✗
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
40
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
88.0%
100
T14-L1 · Doctrine
Doctrine ORM 会在运行时首次使用实体时自动在数据库中创建表。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L2 · Doctrine
EntityManager 的哪个方法把新对象标记为受管理(managed),而 SQL 延迟到 flush() 才执行?
Верный ответ: persist
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
80
T14-L3 · Doctrine
在 Doctrine ORM 3 中,EntityManager::merge() 方法存在,并把传入的对象变成受管理的。
Верный ответ: 否
run-41: ✓ · run-42: ✗ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L4 · Doctrine
DQL 查询以实体及其字段为单位编写,而不是表和列。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L5 · Doctrine
如果不存在 id 为 999 的记录,$repository->find(999) 返回什么?
Верный ответ: null
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L6 · Doctrine
Symfony 的 DoctrineBundle 会在每个请求结束时自动调用 flush()。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L7 · Doctrine
对于受管理的实体,只需修改属性即可:flush() 会在没有显式 persist() 的情况下提交更改——Unit of Work 会追踪变更。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L8 · Doctrine
remove() 会立即执行 SQL DELETE,不会等到 flush()。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L9 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'B'); $em->persist($u); $em->remove($u); $em->flush(); echo count($em->getConnection()->fetchAllAssociative('SELECT * FROM users')); ```
Верный ответ: 0
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T14-L10 · Doctrine
给定:Doctrine ORM 3,EntityManager 使用内存 SQLite,实体 User 带自增主键。users 表为空。这段代码会输出什么? ```php $u = new User(name: 'A'); $em->persist($u); $em->flush(); $a = $em->find(User::class, $u->getId()); $b = $em->find(User::class, $u->getId()); echo spl_object_id($a) === spl_object_id($b) ? 'same' : 'diff'; ```
Верный ответ: same
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
98.0%
PostgreSQL
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
40
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
92.0%
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
100
T15-L1 · PostgreSQL
PostgreSQL 使用 MVCC,因此读会阻塞写,写也会阻塞读。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L2 · PostgreSQL
哪条 SQL 命令会显示查询的执行计划,而不实际执行查询?
Верный ответ: explain
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L3 · PostgreSQL
SERIAL 和 GENERATED ... AS IDENTITY 只是同一机制的两个名称。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L4 · PostgreSQL
默认情况下,PostgreSQL 的 UNIQUE 约束在列中只允许一行 NULL。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L5 · PostgreSQL
PostgreSQL 的哪个聚合函数用分隔符拼接字符串?
Верный ответ: string_agg
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L6 · PostgreSQL
普通 VACUUM 会把死元组占用的空间归还给操作系统。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L7 · PostgreSQL
在窗口函数的定义中,哪个关键字把行分成若干组,函数按组计算?
Верный ответ: partition by
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L8 · PostgreSQL
READ COMMITTED 隔离级别能防止不可重复读(non-repeatable read)。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L9 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (id int, x int); INSERT INTO t VALUES (1, 10), (2, 20), (3, 30); SELECT string_agg(s::text, ',' ORDER BY id) FROM ( SELECT id, sum(x) OVER (ORDER BY id) AS s FROM t ) q; ```
Верный ответ: 10,30,60
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T15-L10 · PostgreSQL
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (x int); INSERT INTO t VALUES (1), (NULL); SELECT count(x) FROM t; ```
Верный ответ: 1
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
PostgreSQL:事务与索引
80
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
20
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-11: ✗ · run-12: ✗ · run-13: ✓ · run-14: ✗ · run-15: ✗
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
88.0%
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
100
T17-L1 · PostgreSQL:事务与索引
默认情况下,PostgreSQL 会把每条单独的 SQL 语句包在自己的隐式事务中(autocommit)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L2 · PostgreSQL:事务与索引
哪条 SQL 命令结束事务并保存其中的所有更改?
Верный ответ: commit
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L3 · PostgreSQL:事务与索引
索引加速的不只是 SELECT:按索引列查找的 UPDATE 和 DELETE 同样受益。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L4 · PostgreSQL:事务与索引
要回滚事务中的部分语句,PostgreSQL 使用 SAVEPOINT。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L5 · PostgreSQL:事务与索引
EXPLAIN ANALYZE 显示查询计划,而不实际执行查询。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L6 · PostgreSQL:事务与索引
哪个 PostgreSQL 扩展为向量(embedding)搜索添加了向量类型和索引?
Верный ответ: vector
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L7 · PostgreSQL:事务与索引
部分索引(CREATE INDEX ... WHERE ...)只为满足条件的行构建。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L8 · PostgreSQL:事务与索引
PostgreSQL 的 SERIALIZABLE 隔离级别是通过锁定事务读取的行来实现的。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L9 · PostgreSQL:事务与索引
这个 SQL 查询返回什么(PostgreSQL 17)? ```sql CREATE TEMP TABLE t (a int); CREATE UNIQUE INDEX ON t (a); INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; INSERT INTO t VALUES (1) ON CONFLICT DO NOTHING; SELECT count(*) FROM t; ```
Верный ответ: 1
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T17-L10 · PostgreSQL:事务与索引
这组 psql 命令会输出什么? ```sql BEGIN; CREATE TEMP TABLE t (a int, UNIQUE (a) DEFERRABLE INITIALLY DEFERRED); INSERT INTO t VALUES (1); INSERT INTO t VALUES (1); SELECT count(*) FROM t; ```
Верный ответ: 2
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
HTTP 与 REST API
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
98.0%
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100.0%
100
T19-L1 · HTTP 与 REST API
HTTP 状态 201 表示请求成功创建了新资源。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L2 · HTTP 与 REST API
哪个 HTTP 状态表示请求成功且响应体为空(例如 DELETE 之后)?
Верный ответ: 204
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L3 · HTTP 与 REST API
按 HTTP 规范,DELETE 方法是幂等的:对同一资源重复请求不会改变结果。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L4 · HTTP 与 REST API
Access-Control-Allow-Origin 头是由客户端发送的,以便服务器同意接受来自其他源的请求。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L5 · HTTP 与 REST API
状态码 429 Too Many Requests 用于客户端超出请求频率限制(rate limiting)的情况。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L6 · HTTP 与 REST API
5xx 表示客户端错误,而 4xx 表示服务器端错误。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L7 · HTTP 与 REST API
哪个 HTTP 头指明请求或响应体的 MIME 类型?
Верный ответ: content-type
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L8 · HTTP 与 REST API
与 PUT 不同,按照 RFC 5789,PATCH 不要求幂等。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L9 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -d 'a=1' http://demo.local/api ```
Верный ответ: post
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T19-L10 · HTTP 与 REST API
这条命令发送哪个 HTTP 方法? ```bash curl -s -G -d 'a=1' http://demo.local/api ```
Верный ответ: get
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100.0%
安全与 OAuth
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
80
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-11: ✗ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
98.0%
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
80
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-26: ✓ · run-27: ✓ · run-28: ✗ · run-29: ✓ · run-30: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
98.0%
100
T20-L1 · 安全与 OAuth
用普通 == 把密码的哈希与库中哈希比较就足以校验密码。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L2 · 安全与 OAuth
CSRF 令牌由服务器发放(绑定会话),并在 unsafe 请求(POST 等)时在服务器端校验。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L3 · 安全与 OAuth
哪个 HTTP 头用于启用 CSP(Content Security Policy)策略?
Верный ответ: content-security-policy
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L4 · 安全与 OAuth
OAuth 2.0 是身份认证协议:access 令牌能说明用户是谁。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L5 · 安全与 OAuth
XSS 可以通过在写库前对输入做服务器端校验来防止。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L6 · 安全与 OAuth
在 OAuth 2.0 授权码流程中,哪个参数会回到 redirect_uri 并用于换取 access 令牌?
Верный ответ: code
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L7 · 安全与 OAuth
Refresh 令牌的生命周期比 access 令牌长,可在用户不重新登录的情况下换取新的 access 令牌。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T20-L8 · 安全与 OAuth
密码盐必须保密:没有盐就无法校验哈希。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
60
T20-L9 · 安全与 OAuth
客户端用不存在的 client_id 请求令牌端点(RFC 6749)。端点的 error 字段返回什么值?
Верный ответ: invalid_client
run-41: ✓ · run-42: ✓ · run-43: ✗ · run-44: ✗ · run-45: ✓
100
T20-L10 · 安全与 OAuth
OAuth 2.0:客户端以 response_type=token 开始流程。授权服务器把 access_token 放在 redirect_uri 的哪个部分?
Верный ответ: fragment
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
96.0%
测试:PHPUnit
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
0
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✗ · run-15: ✗
40
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-11: ✗ · run-12: ✗ · run-13: ✗ · run-14: ✓ · run-15: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-11: ✓ · run-12: ✓ · run-13: ✓ · run-14: ✓ · run-15: ✓
84.0%
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
20
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-26: ✗ · run-27: ✗ · run-28: ✗ · run-29: ✗ · run-30: ✓
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-26: ✓ · run-27: ✓ · run-28: ✓ · run-29: ✓ · run-30: ✓
92.0%
100
T18-L1 · 测试:PHPUnit
PHPUnit 会执行任何类的测试方法——不必继承 TestCase。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L2 · 测试:PHPUnit
PHPUnit 的 setUp() 在类的所有测试之前只执行一次。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L3 · 测试:PHPUnit
数据提供者(data provider)只允许用一组参数运行测试。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L4 · 测试:PHPUnit
PHPUnit 的哪个方法用于声明期望抛出某个特定类的异常?
Верный ответ: expectexception
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L5 · 测试:PHPUnit
在 PHPUnit 中,stub(桩)检查哪些方法被调用过,而 mock(模拟对象)只是返回数据。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L6 · 测试:PHPUnit
在 PHPUnit 10+ 中,向测试传递数据的推荐方式是 #[DataProvider] 属性(@dataProvider 注解已弃用)。
Верный ответ: 是
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L7 · 测试:PHPUnit
PHPUnit 不允许声明一个测试依赖于另一个测试的结果。
Верный ответ: 否
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
40
T18-L8 · 测试:PHPUnit
PHPUnit 的哪个命令行选项会让测试以随机顺序执行?
Верный ответ: --order-by=random
run-41: ✓ · run-42: ✗ · run-43: ✗ · run-44: ✗ · run-45: ✓
100
T18-L9 · 测试:PHPUnit
这条命令会执行多少个测试? ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class CalcTest extends TestCase { public static function prov(): array { return [[1], [2], [3]]; } #[DataProvider('prov')] public function test_sum(int $x): void { $this->assertTrue($x > 0); } #[DataProvider('prov')] public function test_sum_abs(int $x): void { $this->assertTrue($x > 0); } public function test_other(): void { $this->assertTrue(true); } } ``` 命令:`phpunit CalcTest.php --filter test_sum`(PHPUnit 10.5)
Верный ответ: 6
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
100
T18-L10 · 测试:PHPUnit
这条命令会执行多少个测试,其中多少个失败(failure)?用逗号分隔的两个数字回答(执行数, 失败数)。 ```php use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\DataProvider; final class Calc2Test extends TestCase { public function prov(): array { return [[1], [-1]]; } #[DataProvider('prov')] public function test_x(int $x): void { $this->assertTrue($x > 0); } } ``` 命令:`phpunit Calc2Test.php`(PHPUnit 10.5)
Верный ответ: 2,1
run-41: ✓ · run-42: ✓ · run-43: ✓ · run-44: ✓ · run-45: ✓
94.0%