DP Delphi / Pascal  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Обобщения и коллекции

Задания построены вокруг реальных решений: прочитать фрагмент, найти ошибочное допущение, выбрать безопасную правку и закрепить её тестом. Всего 25 вопросов и 15 задач с кодом; тематические шкалы охватывают «Обобщённые типы», «Списки TList<T>», «Словари TDictionary», «Сравнение и хеширование» и «Читаемость решения».

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 70 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 1 из 25
Проследите выполнение GenericRelation: в `GenericRelation` сначала встречается `constructor Create(const AValue: T);`, а затем `constructor TBox<T>.Create(const AValue: T);`. Какой вывод можно сделать только после чтения обеих строк?
PascalDelphi / Pascal · Обобщённые типы
// Отделите правило языка от удачного запуска GenericRelation.
program GenericRelation;
{$APPTYPE CONSOLE}
type
  TBox<T> = class
  private
    FValue: T;
  public
    constructor Create(const AValue: T);
    function Get: T;
  end;
constructor TBox<T>.Create(const AValue: T);
begin FValue := AValue; end;
function TBox<T>.Get: T;
begin Result := FValue; end;
begin end.
Вопрос 2 из 25
Две реализации темы «Списки TList<T>» совпадают на обычном примере. Какое различие всё же меняет их договор?
Вопрос 3 из 25
В практическом сценарии по теме «Словари TDictionary» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 4 из 25
Модуль, использующий тему «Сравнение и хеширование», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 5 из 25
В теме «Читаемость решения» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 6 из 25
Обычный пример по теме «Обобщённые типы» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?
Вопрос 7 из 25
Реализацию темы «Списки TList<T>» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться?
Вопрос 8 из 25
Обычный пример по теме «Словари TDictionary» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?
Вопрос 9 из 25
Для темы «Сравнение и хеширование» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Вопрос 10 из 25
Какое наблюдение должен зафиксировать тест именно для последовательности `Ordered := TList<Integer>.Create;` → `ById := TDictionary<Integer, string>.Create;` в `CollectionChoice`?
PascalDelphi / Pascal · Читаемость решения
// Проследите фактическое поведение CollectionChoice.
program CollectionChoice;
{$APPTYPE CONSOLE}
uses System.Generics.Collections;
var
  Ordered: TList<Integer>;
  ById: TDictionary<Integer, string>;
begin
  Ordered := TList<Integer>.Create;
  ById := TDictionary<Integer, string>.Create;
  try
    Ordered.Add(20);
    ById.Add(20, 'twenty');
  finally
    ById.Free;
    Ordered.Free;
  end;
end.
Вопрос 11 из 25
Правка по теме «Обобщённые типы» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 12 из 25
Какой сценарий по теме «Списки TList<T>» отличит исправную реализацию от версии со скрытым дефектом?
Вопрос 13 из 25
В теме «Словари TDictionary» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 14 из 25
Почему `ContainsKey(K2)` возвращает `True`, хотя подписи `K1.LabelText` и `K2.LabelText` различаются?
PascalDelphi / Pascal · Сравнение и хеширование
// Пользовательские Equals и GetHashCode используют один и тот же признак ключа.
program HashContract;
{$APPTYPE CONSOLE}
uses System.Generics.Collections, System.Generics.Defaults;
type
  TKey = record
    Id: Integer;
    LabelText: string;
  end;
  TKeyComparer = class(TEqualityComparer<TKey>)
  public
    function Equals(const Left, Right: TKey): Boolean; override;
    function GetHashCode(const Value: TKey): Integer; override;
  end;
function TKeyComparer.Equals(const Left, Right: TKey): Boolean;
begin
  Result := Left.Id = Right.Id;
end;
function TKeyComparer.GetHashCode(const Value: TKey): Integer;
begin
  Result := Value.Id;
end;
var
  D: TDictionary<TKey, string>;
  K1, K2: TKey;
begin
  D := TDictionary<TKey, string>.Create(TKeyComparer.Create);
  try
    K1.Id := 7;
    K1.LabelText := 'first';
    D.Add(K1, 'stored');
    K2.Id := 7;
    K2.LabelText := 'second';
    Writeln(D.ContainsKey(K2));
  finally
    D.Free;
  end;
end.
Вопрос 15 из 25
Реализацию темы «Читаемость решения» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться?
Вопрос 16 из 25
Какое свойство темы «Обобщённые типы» становится решающим на граничном входе или при другом порядке действий?
Вопрос 17 из 25
Для темы «Списки TList<T>» готовят регрессионный набор из двух разных сценариев. Какой набор действительно закрывает обе границы?
Вопрос 18 из 25
В `DictionaryModes` сначала встречается `D := TDictionary<string, Integer>.Create;`, а затем `if D.TryGetValue('a', N) then`. Какое наблюдаемое следствие относится именно к сценарию DictionaryModes?
PascalDelphi / Pascal · Словари TDictionary
// Отделите правило языка от удачного запуска DictionaryModes.
program DictionaryModes;
{$APPTYPE CONSOLE}
uses System.Generics.Collections;
var
  D: TDictionary<string, Integer>;
  N: Integer;
begin
  D := TDictionary<string, Integer>.Create;
  try
    D.Add('a', 1);
    D.AddOrSetValue('a', 2);
    if D.TryGetValue('a', N) then
      Writeln(N);
  finally D.Free; end;
end.
Вопрос 19 из 25
Правка по теме «Сравнение и хеширование» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 20 из 25
Какой сценарий по теме «Читаемость решения» отличит исправную реализацию от версии со скрытым дефектом?
Вопрос 21 из 25
В теме «Обобщённые типы» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 22 из 25
Две версии `ListOwnership` сохраняют порядок `Items := TList<TObject>.Create;` → `Items.Free;`. Какое свойство останется общим для обеих?
PascalDelphi / Pascal · Списки TList<T>
// Определите реальную гарантию в ListOwnership.
program ListOwnership;
{$APPTYPE CONSOLE}
uses System.Generics.Collections;
var
  Items: TList<TObject>;
  Obj: TObject;
begin
  Items := TList<TObject>.Create;
  try
    Obj := TObject.Create;
    Items.Add(Obj);
  finally
    Items.Free;
  end;
end.
Вопрос 23 из 25
Модуль, использующий тему «Словари TDictionary», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 24 из 25
Какое свойство темы «Сравнение и хеширование» становится решающим на граничном входе или при другом порядке действий?
Вопрос 25 из 25
Модуль, использующий тему «Читаемость решения», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?

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

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

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

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