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

Управление памятью и утечки

Задания проверяют практическое понимание темы «Управление памятью и утечки»: что гарантирует язык, где начинается ответственность проекта и какой тест отличит исправление от маскировки. Всего 30 вопросов, среди них 18 кодовых. Оценка разбита по разделам: «Менеджер памяти», «Диагностика FastMM», «Циклы ссылок», «Диагностика утечки», «Совместимость и переносимость» и «Стратегия тестирования».

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 85 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 1 из 30
В `MakeText` сначала встречается `GetMem(Result, 1024 * SizeOf(Char));`, а затем `FreeMem(P);`. Какой вывод можно сделать только после чтения обеих строк?
PascalDelphi / Pascal · Менеджер памяти
// Проследите фактическое поведение MakeText.
library SharedMemoryBoundary;
uses System.SysUtils;
function MakeText: PChar; stdcall;
begin
  GetMem(Result, 1024 * SizeOf(Char));
end;
procedure FreeText(P: PChar); stdcall;
begin
  FreeMem(P);
end;
exports MakeText, FreeText;
begin end.
Вопрос 2 из 30
Какой сценарий по теме «Диагностика FastMM» отличит исправную реализацию от версии со скрытым дефектом? Сопоставьте обычный путь и изменение состояния.
Вопрос 3 из 30
Правка по теме «Циклы ссылок» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 4 из 30
Какой сценарий по теме «Диагностика утечки» отличит исправную реализацию от версии со скрытым дефектом? Сопоставьте обычный путь и изменение состояния.
Вопрос 5 из 30
Для темы «Совместимость и переносимость» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Вопрос 6 из 30
Какой граничный результат следует ожидать в `LeakRegression`, когда после `L := TStringList.Create;` выполняется `try L.Add(I.ToString); finally L.Free; end;`?
PascalDelphi / Pascal · Стратегия тестирования
// Проследите фактическое поведение LeakRegression.
program LeakRegression;
uses System.Classes, System.Threading;
procedure RepeatScenario;
var I: Integer; L: TStringList;
begin
  for I := 1 to 500 do
  begin
    L := TStringList.Create;
    try L.Add(I.ToString); finally L.Free; end;
  end;
end;
begin end.
Вопрос 7 из 30
Какое свойство темы «Менеджер памяти» становится решающим на граничном входе или при другом порядке действий? Сопоставьте обычный путь и изменение состояния.
Вопрос 8 из 30
Модуль, использующий тему «Диагностика FastMM», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния.
Вопрос 9 из 30
Какое свойство темы «Циклы ссылок» становится решающим на граничном входе или при другом порядке действий? Сопоставьте обычный путь и изменение состояния.
Вопрос 10 из 30
В теме «Диагностика утечки» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 11 из 30
Какое наблюдение должен зафиксировать тест именно для последовательности `S := TFileStream.Create('cache.bin', fmCreate);` → `try S.WriteBuffer(E, SizeOf(E)); finally S.Free; end;` в `PointerSerialization`?
PascalDelphi / Pascal · Совместимость и переносимость
// Определите реальную гарантию в PointerSerialization.
program PointerSerialization;
uses System.Classes;
type
  TCacheEntry = record
    Data: Pointer;
    Size: NativeInt;
  end;
var E: TCacheEntry; S: TFileStream;
begin
  S := TFileStream.Create('cache.bin', fmCreate);
  try S.WriteBuffer(E, SizeOf(E)); finally S.Free; end;
end.
Вопрос 12 из 30
Правка по теме «Стратегия тестирования» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 13 из 30
Две реализации темы «Менеджер памяти» совпадают на обычном примере. Какое различие всё же меняет их договор? Сопоставьте обычный путь и изменение состояния.
Вопрос 14 из 30
В практическом сценарии по теме «Диагностика FastMM» меняются входные данные и порядок действий. Какой вывод остаётся корректным? Сопоставьте обычный путь и изменение состояния.
Вопрос 15 из 30
Для темы «Циклы ссылок» готовят регрессионный набор из двух разных сценариев. Какой набор действительно закрывает обе границы?
Вопрос 16 из 30
Почему каждый успешный вызов `OpenAndClose` оставляет один `TStringList` неосвобождённым?
PascalDelphi / Pascal · Диагностика утечки
// Отделите правило языка от удачного запуска LeakReproduction.
program LeakReproduction;
uses System.Classes;
procedure OpenAndClose(const FileName: string);
var S: TStringList;
begin
  S := TStringList.Create;
  S.LoadFromFile(FileName);
  Writeln(S.Count);
end;
begin end.
Вопрос 17 из 30
Модуль, использующий тему «Совместимость и переносимость», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния.
Вопрос 18 из 30
Какое свойство темы «Стратегия тестирования» становится решающим на граничном входе или при другом порядке действий? Сопоставьте обычный путь и изменение состояния.
Вопрос 19 из 30
Реализацию темы «Менеджер памяти» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться? Сопоставьте обычный путь и изменение состояния.
Вопрос 20 из 30
В теме «Диагностика FastMM» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 21 из 30
В `InterfaceCycle` сначала встречается `TNode = class(TInterfacedObject, INode)`, а затем `procedure TNode.Link(const Other: INode);`. Какое наблюдаемое следствие относится именно к сценарию InterfaceCycle?
PascalDelphi / Pascal · Циклы ссылок
// Определите реальную гарантию в InterfaceCycle.
program InterfaceCycle;
type
  INode = interface
    procedure Link(const Other: INode);
  end;
  TNode = class(TInterfacedObject, INode)
    FOther: INode;
    procedure Link(const Other: INode);
  end;
procedure TNode.Link(const Other: INode);
begin FOther := Other; end;
var A, B: INode;
begin
  A := TNode.Create; B := TNode.Create;
  A.Link(B); B.Link(A);
  A := nil; B := nil;
end.
Вопрос 22 из 30
Две реализации темы «Диагностика утечки» совпадают на обычном примере. Какое различие всё же меняет их договор? Сопоставьте обычный путь и изменение состояния.
Вопрос 23 из 30
Модуль, использующий тему «Совместимость и переносимость», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния. Рассмотрите вариант, где меняется состояние, но внешний интерфейс остаётся прежним.
Вопрос 24 из 30
Две реализации темы «Стратегия тестирования» совпадают на обычном примере. Какое различие всё же меняет их договор? Сопоставьте обычный путь и изменение состояния.
Вопрос 25 из 30
В теме «Менеджер памяти» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 26 из 30
Какую утечку создаёт каждая итерация `FastMmScenario`, несмотря на вызов `L.Free`, и что покажет полный режим FastMM?
PascalDelphi / Pascal · Диагностика FastMM
// Отделите правило языка от удачного запуска FastMmScenario.
program FastMmScenario;
uses System.Generics.Collections;
var I: Integer; L: TList<TObject>;
begin
  for I := 1 to 1000 do
  begin
    L := TList<TObject>.Create;
    L.Add(TObject.Create);
    L.Free;
  end;
end.
Вопрос 27 из 30
Обычный пример по теме «Циклы ссылок» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник? Сопоставьте обычный путь и изменение состояния.
Вопрос 28 из 30
Реализацию темы «Диагностика утечки» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться? Сопоставьте обычный путь и изменение состояния.
Вопрос 29 из 30
Обычный пример по теме «Совместимость и переносимость» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник? Сопоставьте обычный путь и изменение состояния.
Вопрос 30 из 30
В теме «Стратегия тестирования» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?

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

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

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

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