DP Delphi / Pascal  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Расследование аварии Delphi-приложения

Этот тест проверяет не память на названия, а способность разбирать код, видеть границы механизма и выбирать исправление, которое не ломает соседние сценарии. Внутри 30 вопросов, из них 18 с фрагментами Object Pascal. Отдельные результаты показываются по разделам: «Стек вызовов», «Ошибки доступа к памяти», «Утечка ресурса», «План исправления», «Технический долг» и «Эволюция архитектуры».

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 85 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 1 из 30
После падения показанной сборки обработчик сохранил сырые адреса цепочки `Level1` → `Level2` → `Level3`. Что требуется для надёжного сопоставления адресов собственного модуля с процедурами и строками исходника?
PascalDelphi / Pascal · Стек вызовов
// Определите реальную гарантию в StackSymbols.
program StackSymbols;
uses System.SysUtils;
procedure Level3;
begin
  raise Exception.Create('failure');
end;
procedure Level2; begin Level3; end;
procedure Level1; begin Level2; end;
begin
  Level1;
end.
Вопрос 2 из 30
Правка по теме «Ошибки доступа к памяти» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 3 из 30
Какой сценарий по теме «Утечка ресурса» отличит исправную реализацию от версии со скрытым дефектом? Сопоставьте обычный путь и изменение состояния.
Вопрос 4 из 30
Правка по теме «План исправления» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить? Рассмотрите вариант, где меняется состояние, но внешний интерфейс остаётся прежним.
Вопрос 5 из 30
В теме «Технический долг» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 6 из 30
Какой граничный результат следует ожидать в `ArchitectureGuard`, когда после `procedure Capture(E: Exception; const OperationId: string);` выполняется `procedure Shutdown;`?
PascalDelphi / Pascal · Эволюция архитектуры
// Проследите фактическое поведение ArchitectureGuard.
program ArchitectureGuard;
uses System.SysUtils;
type
  ICrashReporter = interface
    procedure Capture(E: Exception; const OperationId: string);
  end;
  IResourceOwner = interface
    procedure Shutdown;
  end;
begin end.
Вопрос 7 из 30
Модуль, использующий тему «Стек вызовов», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния.
Вопрос 8 из 30
Какое свойство темы «Ошибки доступа к памяти» становится решающим на граничном входе или при другом порядке действий? Сопоставьте обычный путь и изменение состояния.
Вопрос 9 из 30
Модуль, использующий тему «Утечка ресурса», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния.
Вопрос 10 из 30
Для темы «План исправления» готовят регрессионный набор из двух разных сценариев. Какой набор действительно закрывает обе границы?
Вопрос 11 из 30
Какие поля записи `TIncidentCause` превращают расплывчатое «переписать всё» в проверяемый список причин после инцидента?
PascalDelphi / Pascal · Технический долг
// Определите реальную гарантию в DebtInventory.
program DebtInventory;
type
  TIncidentCause = record
    Symptom: string;
    MissingOwner: string;
    MissingTelemetry: string;
    MissingTest: string;
  end;
begin end.
Вопрос 12 из 30
Какой сценарий по теме «Эволюция архитектуры» отличит исправную реализацию от версии со скрытым дефектом? Сопоставьте обычный путь и изменение состояния.
Вопрос 13 из 30
В практическом сценарии по теме «Стек вызовов» меняются входные данные и порядок действий. Какой вывод остаётся корректным? Сопоставьте обычный путь и изменение состояния.
Вопрос 14 из 30
Две реализации темы «Ошибки доступа к памяти» совпадают на обычном примере. Какое различие всё же меняет их договор? Сопоставьте обычный путь и изменение состояния.
Вопрос 15 из 30
Для темы «Утечка ресурса» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Вопрос 16 из 30
Что произойдёт при вызове `ReadCount(nil)`?
PascalDelphi / Pascal · План исправления
// Проследите фактическое поведение MinimalIncidentFix.
program MinimalIncidentFix;
uses System.SysUtils;
function ReadCount(P: PInteger): Integer;
begin
  if P = nil then
    raise EArgumentNilException.Create('P');
  Result := P^;
end;
begin end.
Вопрос 17 из 30
Какое свойство темы «Технический долг» становится решающим на граничном входе или при другом порядке действий? Сопоставьте обычный путь и изменение состояния.
Вопрос 18 из 30
Модуль, использующий тему «Эволюция архитектуры», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния.
Вопрос 19 из 30
Обычный пример по теме «Стек вызовов» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник? Сопоставьте обычный путь и изменение состояния.
Вопрос 20 из 30
В теме «Ошибки доступа к памяти» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 21 из 30
В `ResourceLeakKinds` сначала встречается `Bitmap := TBitmap.Create;`, а затем `Writeln(GetGuiResources(GetCurrentProcess, GR_GDIOBJECTS));`. Какое наблюдаемое следствие относится именно к сценарию ResourceLeakKinds?
PascalDelphi / Pascal · Утечка ресурса
// Отделите правило языка от удачного запуска ResourceLeakKinds.
program ResourceLeakKinds;
uses Winapi.Windows, Vcl.Graphics;
var Brush: HBRUSH; Bitmap: TBitmap;
begin
  Brush := CreateSolidBrush(RGB(10, 20, 30));
  Bitmap := TBitmap.Create;
  Writeln(GetGuiResources(GetCurrentProcess, GR_GDIOBJECTS));
end.
Вопрос 22 из 30
В практическом сценарии по теме «План исправления» меняются входные данные и порядок действий. Какой вывод остаётся корректным? Сопоставьте обычный путь и изменение состояния.
Вопрос 23 из 30
Модуль, использующий тему «Технический долг», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния.
Вопрос 24 из 30
В практическом сценарии по теме «Эволюция архитектуры» меняются входные данные и порядок действий. Какой вывод остаётся корректным? Сопоставьте обычный путь и изменение состояния.
Вопрос 25 из 30
Для темы «Стек вызовов» готовят регрессионный набор из двух разных сценариев. Какой набор действительно закрывает обе границы?
Вопрос 26 из 30
Какая последовательность в `AccessViolationCase` создаёт висячую ссылку и почему сбой проявляется только на `Writeln(Alias.Value)`?
PascalDelphi / Pascal · Ошибки доступа к памяти
// Проследите фактическое поведение AccessViolationCase.
program AccessViolationCase;
type
  TWorker = class
    Value: Integer;
  end;
var W, Alias: TWorker;
begin
  W := TWorker.Create;
  Alias := W;
  W.Free;
  W := nil;
  Writeln(Alias.Value);
end.
Вопрос 27 из 30
Реализацию темы «Утечка ресурса» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться? Сопоставьте обычный путь и изменение состояния.
Вопрос 28 из 30
Правка по теме «План исправления» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 29 из 30
Реализацию темы «Технический долг» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться? Сопоставьте обычный путь и изменение состояния.
Вопрос 30 из 30
В теме «Эволюция архитектуры» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу