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

Архитектура и модернизация Delphi-системы

Задания построены вокруг реальных решений: прочитать фрагмент, найти ошибочное допущение, выбрать безопасную правку и закрепить её тестом. Всего 30 вопросов и 18 задач с кодом; тематические шкалы охватывают «Слои», «Зависимости форм», «Выделение домена», «Пошаговая миграция», «Контроль ресурсов» и «Масштабирование решения».

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 85 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 1 из 30
В `OrderForm` сначала встречается `TOrderForm = class(TForm)`, а затем `Query.FieldByName('status').AsString := 'paid';`. Какой вывод можно сделать только после чтения обеих строк?
PascalDelphi / Pascal · Слои
// Проследите фактическое поведение OrderForm.
unit OrderForm;
interface
uses Vcl.Forms, FireDAC.Comp.Client;
type
  TOrderForm = class(TForm)
    Query: TFDQuery;
    procedure SaveClick(Sender: TObject);
  end;
implementation
procedure TOrderForm.SaveClick(Sender: TObject);
begin
  Query.Edit;
  Query.FieldByName('status').AsString := 'paid';
  Query.Post;
end;
end.
Вопрос 2 из 30
Какой сценарий по теме «Зависимости форм» отличит исправную реализацию от версии со скрытым дефектом? Сопоставьте обычный путь и изменение состояния.
Вопрос 3 из 30
Правка по теме «Выделение домена» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 4 из 30
Какой сценарий по теме «Пошаговая миграция» отличит исправную реализацию от версии со скрытым дефектом? Сопоставьте обычный путь и изменение состояния.
Вопрос 5 из 30
В теме «Контроль ресурсов» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 6 из 30
Что можно установить по секциям `requires` и `contains` пакета `BillingModules`, а какой архитектурный вывод из них не следует?
PascalDelphi / Pascal · Масштабирование решения
// Отделите правило языка от удачного запуска Масштабирование решения.
package BillingModules;
requires rtl, vcl, FireDAC;
contains
  Billing.Domain in 'Billing.Domain.pas',
  Billing.Application in 'Billing.Application.pas',
  Billing.Infrastructure in 'Billing.Infrastructure.pas';
end.
Вопрос 7 из 30
Какое свойство темы «Слои» становится решающим на граничном входе или при другом порядке действий? Сопоставьте обычный путь и изменение состояния.
Вопрос 8 из 30
Модуль, использующий тему «Зависимости форм», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния.
Вопрос 9 из 30
Какое свойство темы «Выделение домена» становится решающим на граничном входе или при другом порядке действий? Сопоставьте обычный путь и изменение состояния.
Вопрос 10 из 30
Какой план миграции сохраняет работающий ориентир и позволяет заменить один сценарий за раз?
Вопрос 11 из 30
В `AppScope` сначала встречается `destructor Destroy; override;`, а затем `Database.Free;`. Какое наблюдаемое следствие относится именно к сценарию AppScope?
PascalDelphi / Pascal · Контроль ресурсов
// Проследите фактическое поведение AppScope.
unit AppScope;
interface
type
  TApplicationScope = class
    Database: TObject;
    Cache: TObject;
    destructor Destroy; override;
  end;
implementation
destructor TApplicationScope.Destroy;
begin
  Cache.Free;
  Database.Free;
  inherited;
end;
end.
Вопрос 12 из 30
Правка по теме «Масштабирование решения» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 13 из 30
Две реализации темы «Слои» совпадают на обычном примере. Какое различие всё же меняет их договор? Сопоставьте обычный путь и изменение состояния.
Вопрос 14 из 30
В практическом сценарии по теме «Зависимости форм» меняются входные данные и порядок действий. Какой вывод остаётся корректным? Сопоставьте обычный путь и изменение состояния.
Вопрос 15 из 30
Для темы «Выделение домена» готовят регрессионный набор из двух разных сценариев. Какой набор действительно закрывает обе границы?
Вопрос 16 из 30
Как проходит вызов `ICustomerRepository.FindName` через `TLegacyCustomerAdapter`, и почему это позволяет мигрировать сценарий отдельно?
PascalDelphi / Pascal · Пошаговая миграция
// Один пользовательский сценарий переводится на новый контракт через адаптер к старой функции.
unit LegacyAdapter;
interface
type
  ICustomerRepository = interface
    function FindName(Id: Integer): string;
  end;
  TLegacyCustomerAdapter = class(TInterfacedObject, ICustomerRepository)
    function FindName(Id: Integer): string;
  end;
implementation
function LegacyFindCustomerName(Id: Integer): string;
begin
  Result := 'legacy-' + Id.ToString;
end;
function TLegacyCustomerAdapter.FindName(Id: Integer): string;
begin
  Result := LegacyFindCustomerName(Id);
end;
end.
Вопрос 17 из 30
Модуль, использующий тему «Контроль ресурсов», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния.
Вопрос 18 из 30
Какое свойство файла `BillingModules.dpk` сохранится после переноса одного модуля в другой пакет?
Вопрос 19 из 30
Реализацию темы «Слои» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться? Сопоставьте обычный путь и изменение состояния.
Вопрос 20 из 30
Для темы «Зависимости форм» обычный путь и граничный путь дают разные риски. Какой вывод учитывает оба, не подменяя один другим?
Вопрос 21 из 30
Какой граничный результат следует ожидать в `PricingDomain`, когда после `class function FinalPrice(Base: Currency; DiscountPercent: Integer): Currency…` выполняется `Result := Base * (100 - DiscountPercent) / 100;`?
PascalDelphi / Pascal · Выделение домена
// Проследите фактическое поведение PricingDomain.
unit PricingDomain;
interface
type
  TPricing = record
    class function FinalPrice(Base: Currency; DiscountPercent: Integer): Currency; static;
  end;
implementation
class function TPricing.FinalPrice(Base: Currency; DiscountPercent: Integer): Currency;
begin
  Result := Base * (100 - DiscountPercent) / 100;
end;
end.
Вопрос 22 из 30
Две реализации темы «Пошаговая миграция» совпадают на обычном примере. Какое различие всё же меняет их договор? Сопоставьте обычный путь и изменение состояния.
Вопрос 23 из 30
Модуль, использующий тему «Контроль ресурсов», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре? Сопоставьте обычный путь и изменение состояния. Рассмотрите вариант, где меняется состояние, но внешний интерфейс остаётся прежним.
Вопрос 24 из 30
Какое свойство темы «Масштабирование решения» становится решающим на граничном входе или при другом порядке действий? Сопоставьте обычный путь и изменение состояния. Рассмотрите вариант, где меняется состояние, но внешний интерфейс остаётся прежним.
Вопрос 25 из 30
В теме «Слои» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 26 из 30
Какие скрытые зависимости появляются из трёх прямых обращений к глобальным формам внутри `OpenCustomer`?
PascalDelphi / Pascal · Зависимости форм
// Определите реальную гарантию в FormDependencies.
unit FormDependencies;
interface
uses CustomerForm, InvoiceForm;
type
  TMainForm = class
    procedure OpenCustomer(Id: Integer);
  end;
implementation
procedure TMainForm.OpenCustomer(Id: Integer);
begin
  CustomerForm.CurrentId := Id;
  CustomerForm.Show;
  InvoiceForm.RefreshForCustomer(Id);
end;
end.
Вопрос 27 из 30
Обычный пример по теме «Выделение домена» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник? Сопоставьте обычный путь и изменение состояния.
Вопрос 28 из 30
Какое наблюдаемое свойство должно сохраниться, если внутреннюю функцию `LegacyFindCustomerName` позже заменить новым хранилищем?
Вопрос 29 из 30
Обычный пример по теме «Контроль ресурсов» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник? Сопоставьте обычный путь и изменение состояния.
Вопрос 30 из 30
Какие две проверки отличают полезное разбиение решения на пакеты от простого переноса сложности в сборку?

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

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

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

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